(百例编程)71.约瑟夫问题
2012-06-10 16:17
337 查看
题目:这是17世纪的法国数学家加斯帕在《数目的游戏问题》中讲的一个故事:15个教徒和15 个非教徒在深海上遇险,必须将一半的人投入海中,其余的人才能幸免于难,于是想了一个办法:30个人围成一圆圈,从第一个人开始依次报数,每数到第九个人就将他扔入大海,如此循环进行直到仅余15个人为止。问怎样排法,才能使每次投入大海的都是非教徒。
//题目:这是17世纪的法国数学家加斯帕在《数目的游戏问题》中讲的一个故事: //15个教徒和15 个非教徒在深海上遇险,必须将一半的人投入海中,其余的人才 //能幸免于难,于是想了一个办法:30个人围成一圆圈,从第一个人开始依次报数, //每数到第九个人就将他扔入大海,如此循环进行直到仅余15个人为止。问怎样排 //法,才能使每次投入大海的都是非教徒。 //BY as1138 2011-10-22 #include <iostream> #include <queue> using namespace std; int main(void) { queue<int> iqTe; char chPai[30]; int i=0; int tem; while (i!=30) iqTe.push(i++); for (int j=0;j!=15;++j) { for (int n=0;n!=8;++n) { tem = iqTe.front(); iqTe.pop(); iqTe.push(tem); } tem = iqTe.front(); iqTe.pop(); chPai[tem] = '*'; } i= 0; while (i!=30)//输出结果中‘*’代表非教徒,‘@’代表教徒 { if(chPai[i] != '*') chPai[i] = '@'; cout<<chPai[i++]<<" "; } cout<<endl; return 0; }
相关文章推荐
- (百例编程)37.爱因斯坦数学问题
- (百例编程)40.三色球问题
- 编程一些问题及其解决方法
- 编程中的对齐问题
- socket编程小问题:地址已经被使用——Address already in use
- 编程之美-中国象棋将帅问题
- HttpWebRequest编程相关问题阶段总结
- 微软编程之美--中国象棋将帅问题
- C语言编程常见问题分析
- Python 下socket编程地址被占用问题:Address already in use
- 编程中,一个小问题的处理思想
- (百例编程)2.绘制余弦曲线和直线
- (百例编程)14.怎样存钱利最大
- 26-网络编程-15-网络编程(TCP协议-练习-常见问题)
- 编程之美--CPU占用率问题所提到函数的总结
- C语言编程常见问题分析
- ARCGIS 10.0用 VS2010 c#编程问题解决
- (百例编程)26.亲密数
- Linux curses编程的一个问题