题目链接:https://leetcode-cn.com/problems/additive-number/
写了一坨什么东西。。
int wei(long long num)
{
int cnt=0;
while(num)
{
cnt++;
num/=10;
}
return fmax(1,cnt);
}
int dfs(long long f1,long long f2,char *num)
{
long long now=0;
for(int i=0;i<fmin((int)strlen(num),wei(f1+f2));i++)
{
now=now*10+num[i]-'0';
}
if(f1+f2==now)
{
if(strlen(num)==wei(now)) return 1;
return dfs(f2,now,num+wei(now));
}
return 0;
}
bool isAdditiveNumber(char * num){
int len=strlen(num);
long long n1=0;
int flag=0;
for(int i=0;i<(len-1)/2;i++)
{
if(num[0]=='0' && i>0) return 0;
n1=n1*10+num[i]-'0';
long long n2=0;
for(int j=i+1;j<strlen(num);j++)
{
if(num[i+1]=='0' && j>i+1) break;
n2=n2*10+num[j]-'0';
if(wei(n1+n2)+j+1>len) break;
if(dfs(n1,n2,num+j+1))
{
return 1;
}
}
}
return 0;
}