急需帮助!!!
查看原帖
急需帮助!!!
355882
王寅泽楼主2020/12/5 18:32

怎样让以下代码运行时,只输出前三组。

#include <bits/stdc++.h>
using namespace std;
int n,tot;
int a[10],b[10],c[10],d[10];
void print()
{
	tot++;
	for(int i=1;i<=n;i++)
	{
		cout << a[i] << " ";
	}
	cout << endl;
}
int search(int i)
{
	for(int j=1;j<=n;j++)
	{
		if(b[j]==0 && c[i+j]==0 && d[i-j+n-1]==0)
		{
			a[i]=j;
			b[j]=1;
			c[i+j]=1;
			d[i-j+n-1]=1;
			if(i==n)
			{
				print();
			}
			else
			{
				search(i+1);
			}
			b[j]=0;
			c[i+j]=0;
			d[i-j+n-1]=0;
		}
	}
}
int main()
{
	cin >> n; 
	search(1);
	cout << tot;
	return 0;
}
2020/12/5 18:32
加载中...