求助(过样例0pts)
查看原帖
求助(过样例0pts)
1425632
kwQin楼主2025/7/30 21:45
#include<bits/stdc++.h>
using namespace std;
int f[30],a[60],n,m;char st[60];deque<int>stk;
void dfs(int x)
{
	if(x>n+1)return;
	if(stk.size()==m)
	{
		while(!stk.empty())
		{
			cout<<stk.front()<<" ";
			stk.pop_front();
		}
		exit(0);
	}
	if(a[x]==0)return;
	if(f[a[x]]==0)
	{
		f[a[x]]=1;
		stk.push_back(a[x]);
		dfs(x+1);
		f[a[x]]=0;
		stk.pop_back();
	}
	if(f[a[x]*10+a[x+1]]==0)
	{
		int y=a[x]*10+a[x+1];
		if(y>m)return;
		f[y]=1;
		stk.push_back(y);
		dfs(x+2);
		f[y]=0;
		stk.pop_back();
	}
}
int main()
{
	scanf("%s",st+1);n=strlen(st+1);
	n>9?m=(n-9)/2+9:m=n;
//	cout<<m<<endl;
	for(int i=1;i<=n;i++)a[i]=st[i]-48;
	dfs(1);
	return 0;
}

2025/7/30 21:45
加载中...