dfs 90分求助
查看原帖
dfs 90分求助
1267057
aa2211034566楼主2024/3/22 20:59
#include<bits/stdc++.h>
using namespace std;
long long int s=0;
string n;
long long int a,b;
void dfs(int x,int y,int f){
	s=max(stoll(n),s);
	if(x<=0&&y<=0) return;
	if(f>=n.size()) return ;
	if(n[f]=='9') dfs(x,y,f+1);
	else {
		int u=n[f]-'0';
		if (u + x >= 9 && u + 1 <= y) {
            char original = n[f];
            n[f] = '9';
            dfs(x, y - u - 1, f + 1);
            n[f] = original;
            dfs(x - (9 - u), y, f + 1);
        }
		else if(u+x>=9){
			n[f]='9';
			dfs(x-(9-u),y,f+1);
		}
		else if(u+1<=y){
			n[f]='9';
			dfs(x,y-u-1,f+1);
		}
		else{
			n[f]+=x;
			dfs(0,y,f+1);
		}
	}
}
int main(){
	cin>>n;
	cin>>a;
	cin>>b;
	s=stoll(n);
	dfs(a,b,0);
	cout<<s;
}
2024/3/22 20:59
加载中...