魔术师发牌问题
来源:互联网 发布:新开的淘宝店怎么刷钻 编辑:程序博客网 时间:2024/04/26 06:36
问题描述:
魔术师手中有A、2、3……J、Q、K十三张黑桃扑克牌。在表演魔术前,魔术师已经将他们按照一定的顺序叠放好,有花色的一面朝下。魔术表演过程为:一开始,魔术师数1,然后把最上面的那张牌翻过来,是黑桃A;然后将其放到桌面上;第二次,魔术师数1、2;将第一张牌放到这些牌的最下面,将第二张牌翻转过来,正好是黑桃2;第三次,魔术师数1、2、3;将第1、2张牌依次放到这些牌的最下面,将第三张牌翻过来正好是黑桃3;……直到将所有的牌都翻出来为止。
问题:问原来牌的顺序是如何的。
代码实现:
#include#include #define CardNumber 13//数据结构typedef struct node{ int data; struct node *next;}sqlist,*linklist;//循环链表初始化linklist CreateLinklist(){ linklist head = NULL; linklist s,r; int i; r = head; for(i = 1;i <= CardNumber;i++){ s=(linklist)malloc(sizeof(sqlist)); s->data=0; if(head==NULL) head=s; else r->next=s; r=s; } s->next=head; //尾指针指向头部,实现循环 return head;}//发牌顺序计算void Magician(linklist head){ linklist p; int j; int CountNumber=2; p=head; p->data=1; while(1){ for(j=0;j next; if((p->data)!=0){ p->next; j--; } } if(p->data==0){ p->data=CountNumber; CountNumber++; if(CountNumber==14) break; } }}//链表销毁工作void DestoryList(linklist *list){ linklist ptr=*list; linklist buff[CardNumber]; int i=0; while(i next; } for(i=0;i data); p=p->next; } printf("\n"); DestoryList(&p); return 0;}
阅读全文
0 0
- 魔术师发牌问题
- 魔术师发牌问题
- 魔术师发牌问题
- 魔术师发牌问题(数据结构)
- 魔术师发牌问题
- 魔术师发牌问题
- 魔术师发牌问题
- 魔术师发牌问题
- 魔术师发牌问题2
- 魔术师发牌问题
- 魔术师发牌问题
- 魔术师发牌问题
- 魔术师发牌问题
- 魔术师发牌问题
- 魔术师发牌问题
- 魔术师发牌问题
- 魔术师发牌问题
- 魔术师发牌问题
- Java中的equals和hashCode方法详解
- 2017 计蒜之道 初赛 第六场
- Java swing单选按钮
- gdb调试多进程,多线程
- wine
- 魔术师发牌问题
- C#基础总结之一
- 【Angular2】Tour of Heroes 之 e2e测试
- Ajax异步请求原生窥探
- 170604 逆向-CrackMe之014
- 密码学安全算法--对称加密算法
- RxJava学习记录--入门篇
- 虚函数的作用
- laravel 中级任务翻译---简介