比赛 20131130 评测结果 WAWWWWWTTT
题目名称 石子游戏 最终得分 10
用户昵称 明天 运行时间 3.002 s
代码语言 C++ 内存使用 0.54 MiB
提交时间 2015-09-19 20:58:18
显示代码纯文本
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;

const int maxn=15+1;
int n;

bool used[40000],f[40000];
int x,y;
int a[40000],len;
int s;
bool flag=false;
void dfs(int k,int x);
void print();
void shuchu(int x,int n);
int main()
{
	freopen("rocksa.in","r",stdin);
	freopen("rocksa.out","w",stdout);
	
	cin>>n;
	f[1]=true;
	for (int i=2; i<40000; i*=2)
	{
		f[i]=true;
	}
	s=1;
	for (int i=1; i<=n; i++)
		s=s<<1;
	shuchu(0,n); cout<<endl;
	dfs(1,0);
	shuchu(0,n); cout<<endl;
	return 0;
}
void dfs(int k,int x)
{
	if (flag) return;
	if (k>s-1)
	{
		flag=true;
		print();
		return;
	}
	for (int i=1; i<=s; i++)
	{
		if (!used[i] && f[i^x])
		{
			used[i]=true;
			a[len]=i; len++;
			dfs(k+1,i);
			len--; used[i]=false;
		}
	}
}
void print()
{
	for (int i=0; i<len; i++)
	{
		shuchu(a[i],n); cout<<endl;
	}
		
}
void shuchu(int x,int n)
{
	if (n==1)
	{
		if (x==1) cout<<'X';
		else cout<<'O';
		return;
	}
	shuchu(x/2,n-1);
	if (x%2==1) cout<<'X';
	else cout<<'O';
}