c++ - 动态骰子总和 - 模
问题描述
你有 d 个骰子,每个骰子有 f 个面,编号为 1、2、...、f。
返回可能的方式数(在 fd 总方式中)以 10^9 + 7 为模来掷骰子,因此面朝上数字的总和等于目标。
我的代码适用于 f、d 和 target 的小值。它给出 0 作为大值的答案,例如 30、30、500。
我在解决模数发生的位置时遇到了很多困难。我的解决方案有什么问题?
int numRollsToTarget(int d, int f, int target)
{
long long int dp[d][target];
for (int i = 0; i < d; i++)
{
for (int j = 0; j < target; j++)
{
dp[i][j] = 0;
}
}
for (int i = 0; i < f && i < target; i++)
{
dp[0][i] = 1;
}
for (int i = 1; i < d; i++)
{
for (int j = 0; j < target; j++)
{
if (j >= i)
for (int k = max(0, j - f); k < min(j, f); k++)
dp[i][j] = (dp[i - 1][j - k - 1] % 1000000007 +
dp[i][j] % 1000000007) % 1000000007;
}
}
return dp[d - 1][target - 1];
}
解决方案
推荐阅读
- c# - 尝试激活 yyy 时无法解析类型 xxx 的服务
- php - 如何将登录信息存储在关联数组中
- android - 新的 TabLayout 材质组件如何设置 Tab 背景颜色
- oracle - 在 Oracle sqldeveloper 中为 Schema 启用 ORDS
- html - 更改 td 的宽度
- java - 自带jar文件
- react-native - React Native - Native Base - 显示错误
- c - 使用 fgetc 读取文件会提供额外的(垃圾)值
- php - 使用 php/javascript 在纬度/经度点数组中查找多边形/线/点
- reactjs - 如何知道一个函数是否在 redux thunk dispatch 中被调用?