本文主要是介绍约瑟夫问题:有n个人围成一圈,顺序报数(1~3),报到3退出,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
【描述】
有n个人围成一圈,顺序排号,从第一个人开始报数(从1~3报数),凡报到3的人退出圈子,问最后留下的人原来排在第几号。
【C语言】
#include<stdio.h>int main() {int num[50];int *p;int i, k, m, n;scanf("%d", &n);p = num;for (i = 0; i < n; i++)*(p + i) = i + 1;i = 0;k = 0;m = 0;while (m < n - 1) {if (*(p + i) != 0)k++;if (k == 3) {*(p + i) = 0;k = 0;m++;}i++;if (i == n)i = 0;}while (*p == 0)p++;printf("%d", *p);return 0;
}
这篇关于约瑟夫问题:有n个人围成一圈,顺序报数(1~3),报到3退出的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!