UVA 127 Accordian'' Patience
来源:互联网 发布:淘宝网龙布峰针贴 编辑:程序博客网 时间:2024/05/20 04:29
题意:把一堆扑克牌,按照规则:如果左边1张或3张和它具有同花色或等级,把这张牌移到上面去,每次移动后,在从头开始移动,知道都移动完,输出剩余几堆与每堆牌数,如果1张牌有2个可以移动的地方,优先移动到左3位置。
思路:用结构体存每一张牌,用栈来储存牌堆,每次判断能不能移动牌,每次移动后进行一次变换
<span style="font-size:18px;">#include <stdio.h>#include <string.h>struct pai{ char value; char suit;} pai[52];int num_dui;int stack[52][52];//这是存每个堆上的牌顺序int num[52];//存每个堆的牌的数量int judge;void traa(int n){ for (int i = n; i < num_dui - 1; i ++) {for(int j = 0; j < 52; j ++){ stack[i][j] = stack[i + 1][j];}num[i] = num[i + 1]; } num_dui--;}void tra(int a, int b){ stack[b][num[b]] = stack[a][num[a] - 1]; stack[a][num[a] - 1] = -1; num[a] --; num[b] ++; if (num[a] == 0) {traa(a); }}int find(){ for (int i = 1; i < num_dui; i ++) {if (i >= 3 && (pai[stack[i - 3][num[i - 3] - 1]].suit == pai[stack[i][num[i] - 1]].suit || pai[stack[i - 3][num[i - 3] - 1]].value == pai[stack[i][num[i] - 1]].value)){ judge = 1; tra(i , i - 3); break;} if(pai[stack[i - 1][num[i - 1] - 1]].suit == pai[stack[i][num[i] - 1]].suit || pai[stack[i - 1][num[i - 1] - 1]].value == pai[stack[i][num[i] - 1]].value){ judge = 1; tra(i, i - 1); break;} } return judge;}int main(){ while (scanf("%c%c%*c", &pai[0].value, &pai[0].suit) != EOF && pai[0].value != '#') {memset(num, 0 ,sizeof(num));for (int i = 0; i < 52; i ++) for (int j = 0; j < 52; j ++)stack[i][j] = -1;stack[0][0] = 0;num_dui = 52;num[0] = 1;judge = 1;for (int i = 1 ; i < 52; i ++){ scanf("%c%c%*c", &pai[i].value, &pai[i].suit); stack[i][0] = i; num[i] = 1;}while (judge){ judge = 0; find();}if (num_dui != 1){ printf("%d piles remaining:", num_dui); for (int i = 0; i < num_dui; i ++)printf(" %d", num[i]); printf("\n");}else{ printf("%d pile remaining:", num_dui); for (int i = 0; i < num_dui; i ++)printf(" %d", num[i]); printf("\n");} } return 0;}</span>
0 0
- UVa 127 "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
- uva 127 - "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
- uva 127 - Accordian Patience
- UVa 127 - "Accordian" Patience
- uva 127 "Accordian" Patience
- UVa 127 - "Accordian" Patience
- LibRTMP源代码分析9:接收消息(Receive Message)
- iOS开发之设置UIView边框颜色及边线厚度以及圆角及弧度
- SQL Server 字符串处理【1】
- Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent
- 3Sum Closest
- UVA 127 Accordian'' Patience
- 堆排序的源码
- Darwin Streaming Server 简介
- spring mongoTemplate使用笔记
- Nosql
- CLOSE_WAIT生成的原因
- window.location.href/replace/reload()--页面跳转+替换+刷新
- ListenUriMode
- Notice: A session had already been starte解决办法