UVA 127 - "Accordian" Patience (模拟)
2013-02-27 18:08
531 查看
就把CSDN当成保存UVA做题代码的一个地方好了。。。
#include <stdio.h> #include <string.h> struct _r { char a[53][3]; int x; }r[53]; // 定义好要用的数据结构 // 移动处理函数 void deal(int n, int s) { int left = r[n-s].x; int right = r .x; for (int i=0; i<3; i++) { r[n-s].a[left+1][i] = r .a[right][i]; } r[n-s].x++; r .x--; if (r .x >= 0) return; for (int i=n; i<52; i++) r[i] = r[i+1]; } int main() { while (1) { scanf("%s", r[0].a[0]); if ('#' == r[0].a[0][0]) break; r[0].x = 0; r[52].x = -1; for (int i=1; i<52; i++) { scanf("%s", r[i].a[0]); r[i].x = 0; } bool flag = true; int nCount = 0; while (flag) { int i; for (i=1; r[i].x!=-1; i++) { int left = r[i-3].x; int right = r[i].x; if (i>0 && (r[i].a[right][0]==r[i-3].a[left][0] || r[i].a[right][1]==r[i-3].a[left][1])) { deal(i, 3); flag = false; break; } left = r[i-1].x; right = r[i].x; if (r[i].a[right][0]==r[i-1].a[left][0] || r[i].a[right][1]==r[i-1].a[left][1]) { deal(i, 1); flag = false; break; } } nCount = i; // 判断有没有交换,如果没有的话就跳出while()函数 if (true == flag) flag = false; else flag = true; } if (nCount > 1) printf("%d piles remaining:", nCount); else printf("%d pile remaining:", nCount); for (int i=0; r[i].x != -1; i++) printf(" %d", r[i].x+1); puts(""); } return 0; }
相关文章推荐
- UVa 127 "Accordian" Patience (模拟链表&栈)
- UVa 127 - "Accordian" Patience(模拟)
- UVa 127 "Accordian" Patience (模拟链表&栈)
- UVA - 127 "Accordian" Patience
- uva 127 - "Accordian" Patience
- UVA127- "Accordian" Patience(模拟链表)
- UVA 127 "Accordian" Patience
- uva127 - "Accordian" Patience
- UVA127 - "Accordian" Patience
- UVa 127 - "Accordian" Patience 数据结构专题
- UVa 127 - "Accordian" Patience POJ 1214 链表题解
- UVA127 "Accordian" Patience 【模拟】
- UVa 127 - "Accordian" Patience
- uva 127 - "Accordian" Patience
- UVa:127 "Accordian" Patience
- UVa 127 - "Accordian" Patience
- UVa 127 "Accordian" Patience
- UVA 127 - "Accordian" Patience---用STL做的(TLE超时)
- uva127 "Accordian" Patience poj1214 模拟
- UVa 127 - "Accordian" Patience POJ 1214 链表题解