首页 > 其他 > 详细

P1219

时间:2019-10-27 15:09:24      阅读:97      评论:0      收藏:0      [点我收藏+]
#include <bits/stdc++.h>
using namespace std;
int a[16][16];
int l[16];
int n,ans;

void paint(int x,int y)
{
	int x1=x+1,y1=y-1;
	while (x1<=n && y1>0)
	{
		a[x1][y1]++;
		x1++; y1--;
	}
	x1=x+1; y1=y+1;
	while (x1<=n && y1<=n)
	{
		a[x1][y1]++;
		x1++; y1++; 
	}
	x1=x+1; y1=y;
	
	while (x1<=n)
	{
		a[x1][y1]++;
		x1++;
	}
	
}



void depaint(int x,int y)
{
	int x1=x+1,y1=y-1;
	while (x1<=n && y1>0)
	{
		a[x1][y1]--;
		x1++; y1--;
	}
	x1=x+1; y1=y+1;
	while (x1<=n && y1<=n)
	{
		a[x1][y1]--;
		x1++; y1++; 
	}
	x1=x+1; y1=y;
	
	while (x1<=n)
	{
		a[x1][y1]--;
		x1++;
	}
}


void dfs(int x,int y)
{
	if (x==n) {
	ans++;
	if (ans<=3)
	{
		for (int i=1;i<=n;i++) cout<<l[i]<<" ";
		cout<<endl;
	}
	}
else {
	for (int i=1;i<=n;i++)
	    if (a[x+1][i]==0){
	    	l[x+1]=i;
	    	paint (x+1,i);
	    	dfs(x+1,i);
	    	depaint(x+1,i);
	    	l[x+1]=0;
	    	}
}
} 
int main()
{
	cin>>n;
	for (int i=1;i<=n;i++)
	{
		l[1]=i;
		paint(1,i);
		dfs(1,i);
		depaint(1,i);
		l[1]=0;
	}
	cout<<ans;
}

  

P1219

原文:https://www.cnblogs.com/asanagiyantia/p/11747513.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!