本文主要是介绍10.7约瑟夫问题,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
约瑟夫问题
模拟,构建一个循环队列,数组就行,如果有人就为1,没人则为0
memset复习
需要注意,在给整数数组赋值时,用memset赋值出来不是1,而是16开头的
所以这样会报错,因为数组里存的根本就不是1,
最稳妥还是用循环语句
int nxt[105];int n, m;cin >> n >> m;for (int j = 1; j <= n; j++) {nxt[j] = j + 1;}nxt[n] = 1;int i = n;//i指的是当前这个人的前一个人while (n) {int t = 1;//把第一个人算上while (t < m) {t++;i = nxt[i];}cout << nxt[i]<<" ";//此时出来时就是最后一个人,nxt[i] = nxt[nxt[i]];n--;}
这篇关于10.7约瑟夫问题的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!