比赛 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;
}