思路:过程模拟,模拟每一次选中出局的操作,知道最后没有人时。
注意:1、避免进行数组的删除可以使用将删除的数字置为0
2、对环的操作是个难点,如何实现线性数组首尾相连构成环,需要注意数组的下标问题
3、计算选中的人的数时,需要注意我们使用0代表出局的人,所以数到0时代表该位置为空不应该算数,需要数到非零时才算数
4、输出格式也是个注意事项,个位数输出两个空格,十位数输出一个空格(presentation error输出格式错误
#include <stdio.h>
#include <iostream>
using namespace std;
//成功
int n,k,m;
int size;
int number(int *a,int r,int a1,int b,int k1,int m1){//用来计算下一个需要踢出的位置
if(a1==1){//a时
do{
r++;
if(r>=n)r=r-n;
if(r<=0)r=r+n;
if(a[r]!=0)//只有当前有人的时候计数才有用,为0时计数没用
{
k1--;
}
}while(k1>0);
return r;
}else{//b