比赛 防止浮躁的小练习v0.9 评测结果 AATTTTTTTT
题目名称 放棋子 最终得分 20
用户昵称 jjky 运行时间 8.025 s
代码语言 C++ 内存使用 0.28 MiB
提交时间 2016-11-07 19:04:49
显示代码纯文本
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<map>
#include<queue>
#include<vector>
using namespace std;
const int maxn=205;
int n,x[maxn],z[maxn];
long long sum;

bool plac(int k)
{
	for(int i=1;i<k;i++)
		if(x[i]==x[k])
			return false;
	return true;
}

void put(int k)
{
	if(k==n+1)
	{
		sum++;
		return ;
	}
	else 
	{
		for(int i=1;i<=n;i++)
		{
			x[k]=i;
			if(plac(k)&&x[k]!=z[k])
				put(k+1);
		}
	}
	return ;
}

int main()
{
	freopen("chess_2016.in","r",stdin);
	freopen("chess_2016.out","w",stdout);
	cin>>n;
	int a;
	for(int i=1;i<=n;i++)
		for(int j=1;j<=n;j++)
		{
			cin>>a;
			if(a==1)
				z[i]=j;
		}
	put(1);
	cout<<sum<<endl;
	return 0;
}

/*
2
0 1
1 0
*/