int num;//记录约瑟夫环最初的个数
printf("请输入约瑟夫环最初的个数:");
scanf("%d", &num);
if (0 == num) {
printf("输入错误,自动退出...");
exit(0);
}
int *pArray = malloc(sizeof(int) * num);
int count = 0;//数到3,置0
int label = 0;//标记第几个数被置零
for (int i = 0; i < 13; i++) {
pArray[i] = i + 1;
// printf("%d\t", pArray[i]);
}
// printf("\n");
for (int i = 13 - 1; i > 0; i--) {
for (int j = 0; j < 13; j++) {
if (pArray[j] == 0) {
continue;
}
if (count == 2) {
label = j;
pArray[j] = 0;
num--;
count = 0;
continue;
}
count++;
}
// for (int i = 0; i < 13; i++) {
// printf("%d\t", pArray[i]);
// }
// printf("\n");
if (num == 0) {
break;
}
}
printf("最后一个留下的是第%d个.\n", label + 1);
free(pArray);
约瑟夫环问题
最新推荐文章于 2022-05-04 19:46:17 发布