本文共 1127 字,大约阅读时间需要 3 分钟。
N个人围成一圈顺序编号,从1号开始按1、2、3......顺序报数,报p者退出圈外,其余的人再从1、2、3开始报数,报p的人再退出圈外,以此类推。 请按退出顺序输出每个退出人的原序号。
输入只有一行,包括一个整数N(1<=N<=3000)及一个整数p(1<=p<=5000)。
按退出顺序输出每个退出人的原序号,数据间以一个空格分隔,但行尾无空格。
在这里给出一组输入。例如:
7 3
3 6 2 7 5 1 4
#include#include using namespace std;typedef struct Node{ int data; Node *next;}LinkListNode;LinkListNode* Createlist(int n){ LinkListNode *head,*p,*q; head = (LinkListNode*)malloc(sizeof(LinkListNode)); p = (LinkListNode*)malloc(sizeof(LinkListNode)); head->data = 1; head->next = NULL; p = head; for(int i = 2;i <= n;i++) { q = (LinkListNode*)malloc(sizeof(LinkListNode)); q->data = i; p->next = q; p = q; } p->next = head; return head;}int main(){ int N,p; cin >> N >> p; int ret[N]; int i = 0; LinkListNode *head,*ptr,*q; head = Createlist(N); ptr = head; while(i < (p-1);j++) { ptr = ptr->next; } q = ptr->next; ret[i] = q->data; ptr->next = q->next; free(q); ptr = ptr->next; i++; } for(int j = 0;j
转载地址:http://qkbwk.baihongyu.com/