#Day3 C++
来源:互联网 发布:javascript 控制height 编辑:程序博客网 时间:2024/05/17 09:08
用数组解决约瑟夫问题(Josephus)
//Josephus problem//N个小孩围成一圈,从某个小孩开始顺时针报数,报到M的离开,从下一个小孩开始重新报数,报到M的离开,最后离开的获胜。求获胜小孩编号。#include <iostream>using namespace std;int Josephus(int n,int m){ int a[100]; for(int i=0;i<n;i++)a[i]=0; int count=0,tell=0; a[m-1]=1; for(int j=m,x=0;x!=1;j++){ x=0; if(j>=n)j-=n; if(a[j]==0)count++; if(count%m==0)a[j]=1; for(int t=0;t<n;t++){ if(a[t]==0)x++; } } for(int y=0;y<n;y++){ if(a[y]==0)tell=y+1;} return tell;}
在这段代码中,变量较多。思路是用一个一维数组a来记录每个小孩的状态:出局还是仍在队列中,1为出局,0为在队列中。首先将数组初始化为0,然后循环,用计数器count记录为0的小孩数,count一直累加,当其为M的倍数则该小孩状态置为1;每次遍历都计算数组中状态为0的小孩个数,当个数为1,则只剩一个小孩在队列中,循环结束。因而,循环结束的条件是x==1,这是我思路上卡壳的地方,还好一步步把这个关键找了出来。
看了课本思路,是用一个循环数组,其实本质是一样的。
0 0
- C语言day3
- objective-C:Day3~Day4
- c语言学习日志 day3
- day3
- DAY3
- DAY3
- day3
- day3
- day3
- day3
- Day3
- day3
- day3
- Day3
- DAY3
- Day3
- DAY3
- day3
- 代码笔记 | BP神经网络的C语言代码
- log4j
- 红黑树
- iOS开发集成友盟,腾讯QQ登录授权失败
- Android Studio ADB响应失败解决方法
- #Day3 C++
- MongoDB——命令大全
- js --迭代器模式
- POJ 3013 Big Christmas Tree (最短路 spfa)
- 协议
- mysql字符串后接空格匹配的bug
- MFC加载图标,位图。LoadImage LoadIcon, LoadBitmap
- MAVLink协议通信分析——(一)概述
- 设置TextView字体大小