求助,为什么 RE,请哪位大佬帮忙看一下,谢谢 。
代码如下:
#include<bits/stdc++.h>
using namespace std;
#define ll long long
const ll N=55;
ll n,m,k,i,j,ii,l,a[N],b[N],c[N];
string dp[205][105][105],sum;
string plus_gaojingdu(string s1,string s2){//高精度加法。(这里可能 RE)。
ll kkk;//想不到什么变量名,但是灵感来源于 kkksc03。
memset(a,0,sizeof(a));
memset(b,0,sizeof(b));
memset(c,0,sizeof(c));
for(kkk=0;kkk<s1.size();kkk++) a[s1.size()-kkk-1]=s1[kkk]-'0';
for(kkk=0;kkk<s2.size();kkk++) b[s2.size()-kkk-1]=s2[kkk]-'0';
for(kkk=0;kkk<=50;kkk++) c[kkk]=a[kkk]+b[kkk];
for(kkk=0;kkk<=50;kkk++){
c[kkk+1]+=c[kkk]/10;
c[kkk]%=10;
}
int k1=50;
while(!c[k1]) k1--;
string s="";
for(kkk=k1;kkk>=0;kkk--)
s+=to_string(c[kkk]);
return s;
}
int main(){
cin>>n>>m>>k;
dp[0][0][0]="1";
for(i=1;i<=n+m;i++)
for(j=0;j<=m;j++){
for(l=0;l<k&&l<=j;l++)//动态规划。
dp[i][j][0]=plus_gaojingdu(dp[i][j][0],dp[i-1][j][l]);
for(l=1;l<k&&l<=j;l++)
dp[i][j][l]=plus_gaojingdu(dp[i][j][l],dp[i-1][j-1][l-1]);
}
for(i=0;i<k;i++) sum=plus_gaojingdu(sum,dp[n+m][m][i]);
cout<<sum<<endl;
return 0;
}