![]() | ![]()
|
constrains is too low soo need not to memorise in dp state
#include<bits/stdc++.h>
using namespace std;
int dp[1000][1000];
int mini=10000;
int solve(string s, int sum_r,int index,int cut,int last_val)
{
if(sum_r==0 && index>=s.length() && last_val==0)
{
mini=min(mini,cut);
return 0;
}
else if(index==s.length())
{
if(sum_r-last_val==0)
{
mini=min(mini,cut);
return 0;
}
}
else if(sum_r<0 || index>=s.length()) return 0;
else
{
last_val=last_val*10+s[index]-'0';
solve(s,sum_r-last_val,index+1,cut+1,0);
if(last_val<=1000)
solve(s,sum_r,index+1,cut,last_val);
}
}
int minSums (string num, int sum)
{
solve(num,sum,0,0,0);
if(mini!=10000)
cout<<mini<<endl;
else cout<<-1<<endl;
}
int main()
{
string s;
int sum;
cin>>s>>sum;
minSums(s,sum);
}
No comments:
Post a Comment