首页 > 其他 > 详细

poj3750-小孩报数问题(约瑟夫环)

时间:2015-11-12 09:53:28      阅读:364      评论:0      收藏:0      [点我收藏+]

一,题意:
  中文题。
二,思路:
  1,输入。
  2,无限循环1~n~1~n,直到输出n次,再跳出。
  3,输出名字,并标记。

技术分享
 1 #include<iostream>
 2 #include<cstring>
 3 using namespace std;
 4 int main() {
 5     char name[56][16];
 6     int n, w, s;
 7     cin >> n;
 8     for (int i = 1; i <= n; i++) {
 9         cin >> name[i];
10     }
11     scanf("%d,%d", &w, &s);
12     int count = 0;                            //记录经过未标记的名字几次
13     int k = 0;                                //记录输出的次数
14     for (int i = w; k!=n ; i++) {            //输出 n 次,跳出
15         if (i > n) i = i % n;                //循环 1~n~1~n
16         if (strcmp(name[i], "1")) count++;    //经过未标记的名字时 count++
17         if (count == s) {                    //经过s次未被标记的名字时
18             cout << name[i] << endl;
19             k++;                            //输出一次 k++
20             count = 0;                        //输出以后count重新记数
21             w = i;                            //输出之后,w 重新从 i 开始
22             strcpy(name[i], "1");            //已经输出的名字标记为 1 
23         }
24     }
25     return 0;
26 }
View Code

 

版权声明:本文为博主原创文章,未经博主允许不得转载。

poj3750-小孩报数问题(约瑟夫环)

原文:http://www.cnblogs.com/My-Sunshine/p/4957919.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!