解决啦嘻嘻嘻
```cpp
#include<bits/stdc++.h>
using namespace std;
string s1;
int endd;
int step=INT_MAX;
bool st=false;
int sum1(int x,int y){
if(x==y)return s1[x]-'0';
int de=0;
for(int i=x;i<=y;i++){
de=de*10+s1[i]-'0';
}
return de;
}
void dfs(int sum,int bb,int aa){
if(sum>endd){
return;
}else if(sum==endd&&aa==s1.size()){
//cout<<sum<<" "<<bb<<" "<<aa<<endl;
if(bb<step)step=bb;
st=true;
}
for(int i=aa;i<s1.size();i++){
int dd=sum1(aa,i);
//cout<<dd<<" ss "<<bb<<" "<<sum<<" "<<aa<<" "<<i<<" "<<bb<<endl;
if(dd==0){
dfs(sum+dd,bb+1,i+1);
/// continue;
}
dfs(sum+dd,bb+1,i+1);
}
return;
}
int main(){
cin>>s1;
cin>>endd;
int dsd=sum1(0,s1.size()-1);
if(dsd<endd){
cout<<-1;
return 0;
}//剪枝
//cout<<s1[0]<<s1[1]<<s1[2]<<endl;
//cout<<sum1(1,2);
dfs(0,0,0);
if(st==false){
cout<<-1;
}else
cout<<step-1;
return 0;
}
```
by wwwzne @ 2023-09-26 21:38:05