递归+排序90分求助WAon#10
查看原帖
递归+排序90分求助WAon#10
1183074
xzy_AK_IOI楼主2024/4/4 20:33
#include<bits/stdc++.h>
using namespace std;
string str[114514];
int p=1;
int n;
string mi;
void dfs(int zhi,int k)
{
	if (zhi==n)
	{
		str[p]=mi;
		p++;
		return ;
	}
	dfs(zhi+1,k);
	if (k)
	{
		if (mi[zhi]=='0')
		{
			mi[zhi]='9';
		}
		else
		{
			mi[zhi]--;
		}
		dfs(zhi+1,k-1);
		if (mi[zhi]=='9')
		{
			mi[zhi]='0';
		}
		else
		{
			mi[zhi]++;
		}
		if (mi[zhi]=='9')
		{
			mi[zhi]='0';
		}
		else
		{
			mi[zhi]++;
		}
		dfs(zhi+1,k-1);
		if (mi[zhi]=='0')
		{
			mi[zhi]='9';
		}
		else
		{
			mi[zhi]--;
		}
	}
}
int main()
{
	int k;
	cin>>n>>mi>>k;
	string u="";
	for (int i=1;i<=n-mi.size();i++)
	{
		u+='0';
	}
	mi=u+mi;
	dfs(0,k);
	sort(str+1,str+p);
	for (int i=1;i<=p-1;i++)
	{
		bool pan=1;
		for (int j=0;j<=n-1;j++)
		{
			if (str[i][j]!='0')
			{
				pan=0;
			}
			if (!pan)
			{
				cout<<str[i][j];
			}
		}
		cout<<'\n';
	}
	return 0;
}

~!@#¥%——+{}|:“《》

2024/4/4 20:33
加载中...