poj 3750 (约瑟夫问题)

来源:互联网 发布:明解c语言入门篇 编辑:程序博客网 时间:2024/05/23 13:36


有N个小孩围成一圈,给他们从1开始依次编号,现指定从第W个开始报数,报到第S个时,该小孩出列,然后从下一个小孩开始报数,仍是报到S个出列,如此重复下去,直到所有的小孩都出列(总人数不足S个时将循环报数),求小孩出列的顺序。



#include <iostream>#include <string>using namespace std;int main (){int n,p[65],a,b;string name[65];cin >> n;char c;for (int i=0;i<n;i++)cin >> name[i],p[i] = i;  //输入小孩名字 并记录 小孩的位置。cin >> a >> c >> b;a =  (a + n -1) % n;  //计算出发的位置do{a = (a + b -1) % n;  //出列的孩子位置。cout << name[p[a]] << endl;for (int i=a;i<n-1;i++)p[i] = p[i+1];}while (--n);return 0;}


0 0
原创粉丝点击