记录编号 187713 评测结果 AAAAAAAAAA
题目名称 [USACO Mar]石子游戏 最终得分 100
用户昵称 GravatarSatoshi 是否通过 通过
代码语言 C++ 运行时间 0.095 s
提交时间 2015-09-20 14:50:06 内存使用 0.94 MiB
显示代码纯文本
#include <fstream>
#include <algorithm>
#include <vector>
#define N 1<<17
using namespace std;
ifstream in("rocksa.in");
ofstream out("rocksa.out");
int n;
int p[N]={0};
int total;
vector<int> ans;
bool l[N]={0},flag=0;
void print()
{
	int i,j,v;
	flag=1;
	ans.push_back(0);
	for(i=0;i<ans.size();i++)
	{
		v=ans[i];
		for(j=0;j<n;j++)
		{
			if((v>>j)%2)out<<'X';
			else out<<'O';
		}
		out<<endl;
	}
}
void DFS(int u,int sum)
{
	int i,v;
	if(flag)return ;
	l[u]=1;
	ans.push_back(u);
	for(i=0;i<n;i++)
	{
		v=u^p[i];
		if(!v)
		{
			if(sum==p[n])print();
			continue;
		}
		else
		{
			if(!l[v])
			{
				DFS(v,sum+1);
			}
		}
	}
	ans.pop_back();
	l[u]=0;
}
int main()
{
	int i;
	in>>n;
	p[0]=1;
	for(i=1;i<=n;i++)p[i]=p[i-1]<<1;
	total=p[n];
	DFS(0,1);
	return 0;
}