#include <stdio.h>
#define N 30
int out(int str[], int start, int counts);
int main() {
int str[30];
int i = 0;
for (; i < 30; i++) {
str[i] = i + 1;
}
// printf("%d,\n", out(str, 0, 9));//10 //ok
int rest = 30;
int start = 0;
while (rest > 15) {
start = out(str, start, 9);
rest--;
}
return 1;
}
/**
* 返回下一次开始的下标
*/
int out(int str[], int start, int counts) {
int i = start;//起始位置 经过一些删除 起始位置不一定是有效数字
int number = 0;//有效数字
if(str[i]!=-1){
number=1;
}
while (number < counts) {
//移动
if (i > N - 1) {
i = i - N;
}
i++;
if (str[i] != -1) {
number++;
}
}
int temp = str[i];
str[i] = -1;
printf("start:%d killI:%d val %d\n", start, i, temp);
return i + 1;//本次删除后的下一个位置就是开始位置 //但是开始位置不一定是有效数字
}