码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2015-11-12 09:55:52      阅读:297      评论: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
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!