c++ noi 方格取数代码
时间: 2023-07-28 11:08:51 浏览: 103
以下是一个使用动态规划解决方格取数问题的 C++ 代码示例:
```cpp
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main() {
int n;
cin >> n; // 输入方格的大小
vector<vector<int>> grid(n, vector<int>(n));
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
cin >> grid[i][j]; // 输入每个格子的整数值
}
}
vector<vector<int>> dp(n, vector<int>(n));
dp[0][0] = grid[0][0];
// 计算第一行的最大路径和
for (int j = 1; j < n; j++) {
dp[0][j] = dp[0][j-1] + grid[0][j];
}
// 计算第一列的最大路径和
for (int i = 1; i < n; i++) {
dp[i][0] = dp[i-1][0] + grid[i][0];
}
// 计算其他格子的最大路径和
for (int i = 1; i < n; i++) {
for (int j = 1; j < n; j++) {
dp[i][j] = max(dp[i-1][j], dp[i][j-1]) + grid[i][j];
}
}
cout << dp[n-1][n-1] << endl; // 输出最大路径和
return 0;
}
```
在这个代码中,我们首先读取方格的大小以及每个格子的整数值。然后,使用一个二维数组 `dp` 来存储最大路径和。通过动态规划的思想,我们先计算第一行和第一列的最大路径和,然后逐步计算其他格子的最大路径和。最后,输出 `dp[n-1][n-1]` 即为所求的最大路径和。
希望这段代码对你有所帮助!如有任何疑问,请随时提问。
阅读全文