大佬们求助,最后三个TLE!!!!
查看原帖
大佬们求助,最后三个TLE!!!!
326800
wangz楼主2020/7/6 22:12
//结果正确但运行未通过
#include<bits/stdc++.h>
using namespace std;
int a[30];
bool b[30] = {false};
int n,total;
void print()
{
    if(total<3){
	for (int i = 1; i <= n; i++)
	{
	   cout << a[i]<<" ";
	}
	   cout << endl;
	}
	   total++;
}
void dfs(int i)
{
	if (i == n+1)
	{ for (int i = 1; i <= n - 1; i++)
	    for (int j = i + 1; j <= n; j++)
		  if (abs(i - j) == abs(a[i] - a[j]))
		    return;
		print();
	
	}
	for (int j = 1; j <= n; j++)
	{
		if (b[j] == false)
		{
			a[i] = j;
			b[j] = true;
			dfs(i + 1);
			a[i] = 0;
			b[j] = false;
		}
	}
	
}
int main()
{
	cin >> n;
    dfs(1);
	cout << total << endl;
	return 0;
}
2020/7/6 22:12
加载中...