比赛 20150711暑期B班 评测结果 AAAAAAAAAA
题目名称 跳棋的挑战 最终得分 100
用户昵称 1azyReaper 运行时间 0.793 s
代码语言 C++ 内存使用 0.32 MiB
提交时间 2015-07-11 09:55:04
显示代码纯文本
#include <fstream>
#include <cmath>
using namespace std;
ifstream fin("checker.in");
ofstream fout("checker.out");
int n,full,c,rec[20];
int lowbit(int num)
{
	return(-num&num);
}
int dfs(int deep,int la,int lb,int lc)
{
	if((la&full)==full)
	{
		if(c<3)
		{
			for(int i=1;i<n;i++)
				fout<<rec[i]<<' ';
			fout<<rec[n]<<endl;
		}
		c++;
		return 0;
	}
	int temp,pos,now=(la|lb|lc);
	temp=(~now)&full;
	while (temp)
	{
		pos=lowbit(temp);
		temp-=pos;
		if(c<3)
			rec[deep]=log(pos*1.0)/log(2.0)+1;
		dfs(deep+1,la|pos,(lb|pos)<<1,(lc|pos)>>1);
	}
	return 0;
}
int main()
{
	fin>>n;
	full=(1<<n)-1;
	dfs(1,0,0,0);
	fout<<c<<endl;
	fin.close();
	fout.close();
	return 0;
}