三行四列的网格有几条路
从左上角走到右下角,只能往右或往下。运行下面这段程序:
#include <algorithm>
#include <iostream>
#include <string>
#include <vector>
using namespace std;
using Item = pair<int, int>; // (重量, 价值)
const vector<Item> ITEMS = {{3, 8}, {4, 9}, {5, 11}};
long long paths(int m, int n) {
vector<vector<long long>> dp(m, vector<long long>(n, 1));
for (int i = 1; i < m; i++) {
for (int j = 1; j < n; j++) dp[i][j] = dp[i - 1][j] + dp[i][j - 1];
}
return dp[m - 1][n - 1];
}
int main() {
cout << paths(3, 4) << endl;
}
(本题用 g++ -std=c++17 -O0 编译。)
全部评论