圆桌问题
http://acm.hdu.edu.cn/showproblem.php?pid=4841
用vector建立动态数组,方便对数组进行一系列操作。首先需要赶走n个人,每次赶走的人是坏人,定义一个cnt记录当前位置,圆桌是环,用取余处理。
代码:
#include<bits/stdc++.h> using namespace std; int main() { vector<int>table;//模拟圆桌 int n,m; while(cin>>n>>m){ table.clear();//清空 for(int i=0;i<2*n;i++) table.push_back(i);//初始化 int cnt=0;//cnt记录当前位置 for(int i=0;i<n;i++){ cnt=(cnt+m-1)%table.size(); table.erase(table.begin()+cnt);//赶走第pos+1个人 } int j=0; for(int i=0;i<2*n;i++){ if(!(i%50)&&i) cout<<endl; if(j<table.size()&&i==table[j]){ j++; cout<<"G"; } else cout<<"B"; } cout<<endl<<endl;
} return 0; }
最后输出的时候注意一下格式就a了。