关于错位排列的dfs
  • 板块学术版
  • 楼主Withers
  • 当前回复11
  • 已保存回复11
  • 发布时间2021/4/8 21:41
  • 上次更新2023/11/5 00:51:14
查看原帖
关于错位排列的dfs
481851
Withers楼主2021/4/8 21:41

请问如何在2秒的时限里输出n的所有错位排列的情况(n<=10) 现在的代码(10会tle,开了O2)

#include<bits/stdc++.h>
using namespace std;
int n,r;
int a[110]={1};
bool b[110]={};
void dfs(int dep)
{
	if(dep==n+1) 
	{
		for(int i=1;i<=n;i++) printf("%d ",a[i]);
		printf("\n");
		return;
	}
	else
	{
		for(int i=1;i<=n;i++)
		{
			if(!b[i]&&dep!=i) 
			{
			a[dep]=i;
			b[i]=1;
			dfs(dep+1);
			a[dep]=0;
			b[i]=0;
			}
		}
	}
}
int main()
{
	
	scanf("%d",&n);
	dfs(1);
	
}
2021/4/8 21:41
加载中...