dalao们求助啊20分
查看原帖
dalao们求助啊20分
601747
xibaohe楼主2022/10/5 10:37

20分

剩下点TLE

题解区next_permutation算法不会

求优化

求改
感谢dalao
/*思路:
深搜-->枚举所有可能性
排序-->sort型
循环-->枚举
找到-->加加数*/
#include<bits/stdc++.h>
using namespace std;
long long a[10005],n,m,cnt,tel,an,flag=-2e9;
long long plan[10005];
bool p[10005],f=false;
void search(long long step)
{
	if(f==true)
	return;
	if(step==n+1)
	{
		for(long long i=1;i<=n;i++)
		{
			if(plan[i]!=a[i])
			break;
			if(i==n)
			flag=0;
		}
		flag++;
		if(flag==m+1)
		{
			for(long long i=1;i<=n;i++)
			{
				cout<<plan[i];
				if(i!=n)
				cout<<" ";
			}
			f=true;
		}
		return;
	}
	for(long long i=1;i<=n;i++)
	{
		if(p[i]==true)
		continue;
		plan[step]=i;
		p[i]=true;
		search(step+1);
		p[i]=false;
	}
}
int main(){
	cin>>n;
	cin>>m;
	for(long long i=1;i<=n;i++)
	{
		cin>>a[i];
	}
	search(1);
	return 0;
}


2022/10/5 10:37
加载中...