hdu4841

今每天氣確實很好!ios

接下來是圓桌問題,順便作個vector容器的筆記方便之後複習。嘿嘿dom

Problem Description
圓桌上圍坐着2n我的。其中n我的是好人,另外n我的是壞人。若是從第一我的開始數數,數到第m我的,則當即處死該人;而後從被處死的人以後開始數數,再將數到的第m我的處死……依此方法不斷處死圍坐在圓桌上的人。試問預先應如何安排這些好人與壞人的座位,能使得在處死n我的以後,圓桌上圍坐的剩餘的n我的全是好人。函數

Input
多組數據,每組數據輸入:好人和壞人的人數n(<=32767)、步長m(<=32767);spa

Output
對於每一組數據,輸出2n個大寫字母,‘G’表示好人,‘B’表示壞人,50個字母爲一行,不容許出現空白字符。相鄰數據間留有一空行。ip

Sample Input
2 3 2 4ci

Sample Output
GBBG編譯器

 

BGGB

it

 

#include <iostream>
#include <vector>
#include <list>
using namespace std;
vector<int> vec;
int main()
{
int n,m;
while(cin>>n>>m){
int pos=0,i;//pos查詢壞人下標
for(i=0;i<2*n;i++){
vec.push_back(i);
}
//用resize後,沒法記錄好人壞人下標,需再次賦值
for(i=0;i<n;i++){
pos=(pos+m-1)%vec.size();//每次的人數不一樣,
vec.erase(vec.begin()+pos);//裏面放迭代器
}
int j=0;
for(i=0;i<2*n;i++){
if(!(i%50)&&i)cout << '\n';
if(vec[j]==i&&j<vec.size()){
j++;
cout << 'G';
}
else cout << 'B';
}
vec.clear();//vec清空
cout << "\n\n";
}
return 0;
}
/*io

#include <iostream>
#include <vector>
#include <algorithm> //for_each
#include <ctime>
using namespace std;編譯

void STRConstructor() //初始化,輸入
{
vector<int> vec(5,12);
//cout << vec << endl; 錯誤

vector<int> vec1(5);
for(int i=0;i<5;i++)
cout << vec1[i] << endl;

vector<int> vec3(vec); //vector<char>就不行,<>中間必須相同
//cout << vec3 << endl; 錯誤

vector<int>::iterator ite=vec3.begin();
vector<int>::iterator ite1=vec3.end();
vector<int> vec4(ite,ite1);
//cout << vec4 << endl; 錯誤
for(int i=0;i<3;i++)
cout << vec4[i] << endl;
}

void strcapacity()
{
vector<int>vec(3);
vector<int>vec2();
//cout << vec.empty() << '\n' << vec2.empty() << endl; //報錯?
vec.reserve(10);
cout << vec.size() << vec.capacity() << endl;
vec.resize(2); //從新設置元素個數
cout << vec.size() << vec.capacity() << endl;

//vector<int> vec1(5);
//vec1.push_back(1);
//vec1.push_back(1); //不一樣編譯器,效果不一樣 vs現有容量的一半
//cout << vec1.capacity() << endl;


//從新申請空間會使迭代器失效0
}

void fun(int i) //不能用模板
{
cout << i << ' ';
}

void output() //輸出
{
vector<int>vec;
for(int i=0;i<10;i++)
{
vec.push_back(i);
cout << vec[i] << vec.at(i) <<endl;
}
cout << vec.back() << endl;
vector<int>::iterator ite=vec.begin();
for(;ite!=vec.end();ite++)
{
cout << *ite << endl;
}
for_each(vec.begin(),vec.end(),fun);
}

void operation() //操做函數
{
vector<int>vec;
vector<int>vec1(5,5);
for(int i=0;i<10;i++)
{
vec.push_back(i); //尾添加
}
//vec.insert(vec.begin()+3,12);
//vec.insert(vec.begin()+2,3,3);
//vec.insert(vec.begin()+3,vec1.begin(),vec1.begin()+2);

vec.pop_back(); //尾刪除

//vec.erase(vec.begin()+3);

//vec.erase(vec.begin()+3,vec.end());

//vec.swap(vec1,vec);

cout << (vec<vec1) << endl;

for_each(vec.begin(),vec.end(),fun);
}

void algorithm() //須要頭文件include<algorithm>
{
vector<int>vec;
vector<int>vec1(5,5);
for(int i=0;i<10;i++)
{
vec.push_back(10-i); //尾添加
}
for_each(vec.begin(),vec.end(),fun);

sort(vec.begin(),vec.end());

for_each(vec.begin(),vec.end(),fun);

sort(vec.begin(),vec.end(),greater<int>()); //include<functional>

for_each(vec.begin(),vec.end(),fun);
}

void supplement() //補充
{
vector<int>vec;
for(int i=0;i<10;i++)
{
vec.push_back(i);
}

vector<int>vec1(8,14);

//vec.assign(vec1.begin(),vec1.end()); //清除之前的,重新賦值

//vec.assign(3,0); //清除之前的,重新賦值

//vec.clear();

srand((unsigned int)time(0)); //真正的隨機

random_shuffle(vec.begin(),vec.end()); //隨機亂序

for_each(vec.begin(),vec.end(),fun);

cout << endl;

random_shuffle(vec.begin(),vec.end());

for_each(vec.begin(),vec.end(),fun);

cout << endl;
}

int main()
{
//vector<int> vec;
//STRConstructor();
//strcapacity();
//output();
operation();
//algorithm();
//supplement();
return 0;
}

*/

相關文章
相關標籤/搜索