比赛 动规 评测结果 AAAAAAAAAAAAWWWWWWWW
题目名称 棋盘上的車 最终得分 60
用户昵称 玉带林中挂 运行时间 0.814 s
代码语言 C++ 内存使用 84.31 MiB
提交时间 2017-06-18 21:59:53
显示代码纯文本
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
int cnt(int x)
{
	int ans=0;
	while(x)
	{
		x-=(x&-x);
		ans++;
	}
	return ans;
}
int f[21][1<<20];
int main()
{
	freopen("rook.in","r",stdin);
	freopen("rook.out","w",stdout);
	int n;
	cin>>n;
	long long tps=1<<n;
		f[0][0]=1;
		for(int i=1;i<=n;i++)
		{
			for(int j=1;j<tps;j++)
			{
				if(cnt(j)!=i)
				continue;
				for(int k=0;k<n;k++)
				{
					if(j&(1<<k))
					{
						f[i][j]+=f[i-1][j-(1<<k)];
					}
				}
			}
		}
		cout<<f[n][tps-1];
	fclose(stdin);
	fclose(stdout);
	return 0;
}