原题题目
代码实现(首刷自解)
int numRollsToTarget(int d, int f, int target){
int** dp = (int**)malloc(sizeof(int*) * (d+1)),i,j,k,temp,maxnumber = 0;for(i=1;i<=d;i++){
dp[i] = (int*)malloc(sizeof(int) * (target+1));memset(dp[i],0,sizeof(int) * (target+1));maxnumber += f;temp = fmin(target,maxnumber);for(j=i;j<=temp;j++){
if(i==1){
dp[i][j] = 1;continue;}for(k=1;j>k && k<=f;k++)dp[i][j] = (dp[i-1][j-k] + dp[i][j])% 1000000007;}}return dp[d][target];
}