问题描述:
有n个人围成一圈,从头开始循环报数,报到某个数的人出局,找到最后剩下的那个人。
参考文章:https://blog.csdn.net/zhangting19921121/
#include <iostream>
using namespace std;
int main(){
//sum是总人数,num是数到几
int sum,num;
num=7;
cin>>sum;
bool isCall[sum]={false};
//hold是还有几人
int hold;
hold=sum;
//inx是下标,count计数数到了几
int inx=0,count=0;
//直到只有一人存留
while(hold>1){
if(isCall[inx]==false){
count++;
//正好数到num
if(count==num){
isCall[inx]=true;
count=0;
hold--;
}
}
inx++;
if(inx==sum){
inx=0;
}
}
//遍历,找到剩下的那个人
for(int i=0;i<sum;i++){
if(isCall[i]){
continue;
}else{
cout<<i+1<<endl;
break;
}
}
return 0;
}