记录编号 83157 评测结果 AAAAAAAAAA
题目名称 [USACO Mar]石子游戏 最终得分 100
用户昵称 Gravatardigital-T 是否通过 通过
代码语言 C++ 运行时间 0.015 s
提交时间 2013-11-30 19:40:43 内存使用 0.33 MiB
显示代码纯文本
#include<cstdio>
#include<algorithm>
#include<cmath>
#include<cstring>
#include<vector>
using namespace std;
int N,p[20];
bool boo[65536],flag=0;
vector <int> ans;
void print_ans()
{
	flag=1;
	ans.push_back(0);
	for(unsigned i=0;i<ans.size();i++)
	{
		for(int j=0;j<N;j++)
			if((ans[i]>>j)%2)
				printf("X");
			else
				printf("O");
		printf("\n");
	}
	ans.pop_back();
}
void dfs(int state,int step)
{
	if(flag)return;
	boo[state]=1;
	ans.push_back(state);
	for(int i=0;i<N;i++)
	{
		int temp=state^p[i];
		if(temp==0)
		{
			//printf("%d\n",step);
			if(step==p[N])
				print_ans();
			continue;
		}
		if(!boo[temp])
			dfs(temp,step+1);
	}
	ans.pop_back();
	boo[state]=0;
}
int main()
{
	freopen("rocksa.in","r",stdin);
	freopen("rocksa.out","w",stdout);
	scanf("%d",&N);
	p[0]=1;
	for(int i=1;i<=N;i++)
		p[i]=p[i-1]<<1;
	memset(boo,0,sizeof(boo));
	dfs(0,1);
	return 0;
}