问题描述约瑟夫环C++解决,输出出局序号

发布时间: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;}

以上问题属网友观点,不代表本站立场,仅供参考!