1 solutions
-
0
C :
#include <stdio.h> #include <string.h> int main() { int v[14]; int i,j,p,n; scanf("%d",&n); memset(v,0,sizeof(v)); for(p=i=0;i<n;) { for(j=0;j<=i;) { p%=n;//记录位置 ++p;//向后移动 记录第一个合理位置 if(v[p]==0) ++j; //跳过 已有数据位置 跳 j次 } v[p]=++i; } for(i=1;i<=n;i++)printf("%d ",v[i]); puts(""); return 0; }C++ :
#include"stdio.h" #include"stdlib.h" typedef struct node { int data; struct node *next; }sqlist,*linklist; linklist CreatLinkList(int cardnumber) { 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; } r->next = head; return head; } //魔术师发牌 void Magician(linklist head,int cardnumber) { linklist p; int j; int countnumber = 2; p = head; p->data = 1; while(1) { for(j = 0; j<countnumber ; j++) { p = p->next; if(p->data) { p->next; j--; } } if(p->data==0) { p->data = countnumber; countnumber++; if(countnumber==cardnumber+1) break; } } } //销毁链表 void DestroyList(linklist *List) { } int main() { linklist p; int i,cardnumber; scanf("%d",&cardnumber); p = CreatLinkList(cardnumber); Magician(p,cardnumber); //输出结果 for(i = 0; i<cardnumber; i++) { printf("%d ",p->data); p = p->next; } DestroyList(&p); return 0; }
- 1
Information
- ID
- 16244
- Time
- 1000ms
- Memory
- 128MiB
- Difficulty
- (None)
- Tags
- # Submissions
- 0
- Accepted
- 0
- Uploaded By