比赛 |
20131130 |
评测结果 |
WAWWWWWWWW |
题目名称 |
石子游戏 |
最终得分 |
10 |
用户昵称 |
超级傲娇的AC酱 |
运行时间 |
0.002 s |
代码语言 |
C++ |
内存使用 |
0.32 MiB |
提交时间 |
2013-11-30 16:29:42 |
显示代码纯文本
#include<fstream>
#include<set>
using namespace std;
ifstream fi("rocksa.in");
ofstream fo("rocksa.out");
int n;
set<string>A;
//set<srting>::iterator it;
string INIT,Can;
void SEARCH(int pos,string x)
{
string U=x,UU=U;
if(U==INIT)
{
fo<<INIT<<endl;
return;
}
else
{
U[(pos+1)%n]=UU[(pos+1)%n]='X';
if((A.find(U))==A.end())
{
A.insert(U);
fo<<U<<endl;
SEARCH((pos+1)%n,U);
goto CH2;
}
U=x;UU=x;
CH2:;
(U[pos]=='O')?(U[pos]='X'):(U[pos]='O');
if((A.find(U))==A.end())
{
A.insert(U);
fo<<U<<endl;
SEARCH((pos+1)%n,U);
goto CH1;
}
U=UU;
CH1:;
U[(pos-1+n)%n]='O';
if((A.find(U))==A.end())
{
A.insert(U);
fo<<U<<endl;
SEARCH((pos-1+n)%n,U);
}
//SEARCH(pos+);
}
}
int main()
{
fi>>n;
for(int i=0;i<n;i++)
INIT+='O';
Can=INIT;
Can[n/2]='X';
//A.insert(pair<string,bool>(INIT,true));
A.insert(INIT);
fo<<INIT<<endl;
SEARCH(0,Can);
fo<<INIT;
return 0;
}