STL容器的简单应用。
原题:
Description
有N个小孩围成一圈,给他们从1开始依次编号,现指定从第W个开始报数,报到第S个时,该小孩出列,然后从下一个小孩开始报数,仍是报到S个出列,如此重复下去,直到所有的小孩都出列(总人数不足S个时将循环报数),求小孩出列的顺序。
Input
第一行输入小孩的人数N(N<=64)
接下来每行输入一个小孩的名字(人名不超过15个字符)
最后一行输入W,S (W < N),用逗号","间隔
接下来每行输入一个小孩的名字(人名不超过15个字符)
最后一行输入W,S (W < N),用逗号","间隔
Output
按人名输出小孩按顺序出列的顺序,每行输出一个人名
Source Code
Problem: 3750 User: moxiaomomo
Memory: 240K Time: 16MS
Language: C++ Result: Accepted
#include <iostream>
#include <algorithm>
#include <string>
#include <vector>
using namespace std;
vector<string> v;
string child_name[65];
char sn[8];
int main()
{
int n,w,s;
char c;
v.push_back("0");
cin>>n;
for(int i=1;i<=n;++i)
{
cin>>child_name[i];
v.push_back(child_name[i]);
}
cin.ignore();
cin.getline(sn,7);
w=sn[0]-'0';
s=sn[2]-'0';
for(int i=1;i<=n;++i)
{
int j,cn;
for(j=w-1,cn=1;cn<=s;++cn)
{ //循环计数
if(j==v.size()-1)j=0;
++j;
}
cout<<v[j]<<endl;
v.erase(v.begin()+j);
if(j>=v.size())w=1;
else w=j;
}
return 0;
}
本文介绍了一个经典的约瑟夫环问题,并通过C++代码详细展示了如何使用STL容器来解决这一问题。具体来说,文章描述了有N个小孩围成一圈进行报数游戏的过程,最终确定每个小孩出列的顺序。
2423

被折叠的 条评论
为什么被折叠?



