为什么不能输出行列?
查看原帖
为什么不能输出行列?
335573
freakflowey98楼主2020/9/20 22:28

顺带说一句,那个415263是啥?不是只有行和列吗???

以下是代码
#include<bits/stdc++.h>
int size; 
using namespace std;
int q[10];//Q[ÐÐ]=ÁÐ 
int sum=0;
int ans_hang[10000],ans_lie[10000];
void solve(int n, int i,short time)//Ò»¹²nÐУ¬Ä¿Ç°Òª×ßµÚiÐеÄλÖà 
{
	if(i>=size)
	{
		sum++;
		for(int j=0;j<n;j++)
		{
			ans_hang[j]=j+1;ans_lie[j]=q[j]+1;
		}
		if(time<=3)
		{
			for(int n=0;n<size;n++)
			{
				cout<<ans_hang[n];if(n!=size-1) cout<<ends;
			}
			printf("\n");
			for(int n=0;n<size;n++)
			{
				cout<<ans_lie[n];if(n!=size-1) cout<<ends;
			}
			cout<<endl;	
		}
		return  ;
	}
	bool ok[size];	// ĿǰÇé¿öÏÂ, ok[ÁÐ]ÊÇ·ñ¿ÉÒÔ×ß 
	memset(ok,false,sizeof(ok));		// ¿É×ßΪfalse,²»¿É×ßΪtrue 
	for(int j=0;j<i;j++)	// j ~ i-1 ÐÐ 
	{
		int x=q[j];	// µÚjÐеĻʺóÔÚµÚxÁÐ 
		ok[x]=true;
		int k=i-j;
		if(k<0) k=-k;
		if(x-k>=0) ok[x-k]=true;
		if(x+k<size) ok[x+k]=true;
	}
	
	for(int j=0;j<n;j++)		// iÐÐ jÁÐ   ö¾Ù0~n-1ÁÐ 
	{
		if(ok[j])
			continue;
		q[i]=j;	// ÏÂÒ»¸ö»á°Ñ²ÎÊý¸²¸ÇÁË 
		solve(n,i+1,time+1);
	}
}
 
int main()
{
	memset(q,0,sizeof(q));
	cin>>size;
	solve(size,0,1);
	cout<<sum;		// °Ë»ÊºóÎÊÌâ¹²ÓÐ92Öֽⷨ 
	return 0;
}

2020/9/20 22:28
加载中...