发布时间:2019-07-29 16:17:11
简单一点的C++程序就可以
这个没有特别简单的,也没有特别复杂的,标准的算法(多个教材上有)
我的参考
#include <stdio.h>#define N 30int yuesefu1(int data[],int sum,int k){ int i=0,j=0,count=0; while(count<sum-1) { if(data[i]!=0)/*当前人在圈子里*/ j++; if(j==k)/*若该人应该退出圈子*/ { data[i]=0;/*0表示不在圈子里*/ count++;/*退出的人数加1*/ j=0;/*重新数数*/ } i++;/*判断下一个人*/ if(i==sum)/*围成一圈*/ i=0; } for(i=0;i<sum;i++) if(data[i]!=0) return data[i];/*返回最后一个人的编号*/}
int main(){ int data[N]; int i,n,m; printf("请输入人数:\n"); scanf("%d",&n); for(i=0;i<n;i++) data[i]=i+1; printf("请输入报数:\n"); scanf("%d",&m); printf("最后的人为: %d\n",yuesefu1(data,n,m)); return 0;}