这爆0是怎么回事?
查看原帖
这爆0是怎么回事?
525998
huangjiasheng楼主2023/1/12 18:56
/*****************************************
备注:
******************************************/
#include <queue>
#include <math.h>
#include <stack>
#include <stdio.h>
#include <iostream>
#include <vector>
#include <iomanip>
#include <string.h>
#include <algorithm>
using namespace std;
#define int long long
const int N = 1000 + 10;
const int INF = 0x3f3f3f3f;
int cnt=0;
int f[N],flag[N],z[N];
int a[N];
int n;
void dfs(int step)
{
	if(step>n)
	{
		for(int i=1;i<=n;i++)
		{
			cout<<a[i]<<" ";
		}
		cout<<endl;
		cnt++;
		return;
	}
	for(int i=1;i<=n;i++)
	{
		if(flag[i])
		{
			continue;
		}
		if(z[i+n-step])
		{
			continue;
		}
		if(f[i+step])
		{
			continue;
		}
		flag[i]=z[i+n-step]=f[i+step]=true;
		a[step]=i;
		dfs(step+1);
		flag[i]=z[i+n-step]=f[i+step]=false;
	}
}
signed main()
{
	cin>>n;
	dfs(1);
	cout<<cnt<<endl;
	return 0;
}


2023/1/12 18:56
加载中...