• poj 3750 小孩报数问题


    小孩报数问题
    Time Limit: 1000MS   Memory Limit: 65536K
    Total Submissions: 10523   Accepted: 4882

    Description

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

    Input

    第一行输入小孩的人数N(N<=64) 
    接下来每行输入一个小孩的名字(人名不超过15个字符) 
    最后一行输入W,S (W < N),用逗号","间隔

    Output

    按人名输出小孩按顺序出列的顺序,每行输出一个人名

    Sample Input

    5
    Xiaoming
    Xiaohua
    Xiaowang
    Zhangsan
    Lisi
    2,3

    Sample Output

    Zhangsan
    Xiaohua
    Xiaoming
    Xiaowang
    Lisi

    Source

     

    模拟

    做法一:

     1 #include<cstdio>
     2 #include<cmath>
     3 #include<cstring>
     4 #include<iostream>
     5 #include<queue>
     6 using namespace std;
     7 struct point{
     8     string name;
     9     int num;
    10 };
    11 point p[65];
    12 int main(){
    13     int n,s,w;
    14     while(cin>>n){
    15         int i=1;
    16         for(;i<=n;i++){
    17             cin>>p[i].name;
    18             p[i].num=i;
    19         }
    20         char c;
    21         scanf("%d,%d",&w,&s);//输入尽量用scanf
    22         //cout<<w<<" "<<s<<endl;
    23         queue<int> st;
    24         i=w;
    25         int num=1;
    26         for(;;i++){
    27             if(i==n+1){
    28                 i=1;
    29             }
    30             if(p[i].num){
    31                 if(num==s){
    32                     //cout<<i<<endl;
    33                     num=1;//下一个数的编号 
    34                     st.push(i);
    35                     p[i].num=0;
    36                     if(st.size()==n){
    37                         break;
    38                     }
    39                 }
    40                 else{
    41                     num++;
    42                 }
    43             }
    44         }
    45         for(i=0;i<n;i++){
    46             cout<<p[st.front()].name<<endl;
    47             st.pop();
    48         }
    49     }
    50     return 0;
    51 }

    做法二:

  • 相关阅读:
    图像轮廓缺陷修补
    VS2005,VS2008,VS2010工程文件和解决方案的区别
    MFC中调用WPF教程
    Code::Blocks与wxWidgets安装配置——基于C++的免费IDE开发平台
    kalman 滤波 演示与opencv代码
    Predator:比微软Kinect更强的视频追踪算法来自捷克博士论文
    二值图像轮廓提取
    有用网址
    如何在Rich Edit Control中管理超链接
    坐标轴的平移与旋转
  • 原文地址:https://www.cnblogs.com/Deribs4/p/4299236.html
Copyright © 2020-2023  润新知