为啥剪枝后反而wa了两个,求教
查看原帖
为啥剪枝后反而wa了两个,求教
1174709
le___le楼主2024/5/11 22:19
#include<bits/stdc++.h>
#define ll long long
#define ull unsigned long long
using namespace std;
const int N=1e5+9,p=1e9+7;
ll ans,n,m,k,q;
string s;

void dfs(int len,ll l,ll sum,ll j){
	//if(sum>n||l*10>sum) return;
	if(len>=s.size()-1){
		if(sum+l*10+s[len]-'0'==n) ans=min(ans,j);
		return;
	}
	dfs(len+1,0,sum+l*10+s[len]-'0',j+1);
	dfs(len+1,l*10+s[len]-'0',sum,j);
}


void solve(){
	cin>>s>>n;
	ans=1e9;
	dfs(0,0,0,0);
	if(ans<10000) cout<<ans;
	else cout<<-1;
}

int main(){
	ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
	int T=1;
	//cin>>T;
	while(T--){
		solve();
		cout<<"\n";
	}
	return 0;
} 
2024/5/11 22:19
加载中...