约瑟夫问题,需解答
#include <iostream> using namespace std; int main() { int a[50] = { 0 }, b[50] = {0}, m, n, i, x, j = 1, count = 0; while (cin >> m >> n) { x = m; //防止在编译过程中造成数据更改 for (i = 1; i <= m; i++) //将数存储到数组里 { a[i] = i; } while (x >= 1) { for (i = 1; i <= m; i++) { if (a[i] != 0) { count++; //报数 } if (count == n) { b[j] = a[i]; //用另一个数组重新按顺序记录 a[i] = 0; //已经报过数的将其值赋为0 count = 0; //重新开始报数 x--; //总数在减少 j++; } } } for (i = 1; i <= m; i++) //输出 { cout << b[i] << " "; } cout << endl; } return 0; }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律