约瑟夫环问题,用C编写
答案:3 悬赏:30 手机版
解决时间 2021-05-15 14:41
- 提问者网友:聂風
- 2021-05-14 23:47
约瑟夫环问题,用C编写
最佳答案
- 五星知识达人网友:冷風如刀
- 2021-05-15 00:28
这是我的程序清单
#include <stdio.h>#include <stdlib.h>
int main(void){ int i; int n; int m; int res; scanf("%d%d", &n, &m); res = 0; for (i = 2; i <= n; i++) { res = (res + m) % i; } res++; printf("%d", res); system("PAUSE"); return 0;}
#include <stdio.h>#include <stdlib.h>
int main(void){ int i; int n; int m; int res; scanf("%d%d", &n, &m); res = 0; for (i = 2; i <= n; i++) { res = (res + m) % i; } res++; printf("%d", res); system("PAUSE"); return 0;}
全部回答
- 1楼网友:舍身薄凉客
- 2021-05-15 02:52
很多人用模拟法解决此问题,但程序太复杂,效率也低下。用递推公式可以简单解决。设f[n]表示n个人的约瑟夫环问题的结果,其中报数为m的人出局,则有f[1] = 0f[n] = (f[n - 1] + m) % n
程序如下#include <stdio.h>#include <stdlib.h>
int main(void){ int i; int n; int m; int res; scanf("%d%d", &n, &m); res = 0; for (i = 2; i <= n; i++) { res = (res + m) % i; } res++; printf("%d", res); system("PAUSE"); return 0;}
- 2楼网友:笑迎怀羞
- 2021-05-15 01:56
我有个C++的,你要吗
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯