#2382. L3-25阶段复习与测评
L3-25阶段复习与测评
- 给定序列 [1, 3, 2, 4, 5],最长递增子序列的长度是多少?() {{ select(1) }}
- 3
- 4
- 5
- 2
- 有一个容量为5的背包,物品重量和价值分别为:物品1(2,3)、物品2(3,4)、物品3(4,5)。求最大价值() {{ select(2) }}
- 7
- 8
- 9
- 10
- 在一个3x3的网格中,从左上角到右下角有多少条路径?只能向右或向下移动。() {{ select(3) }}
- 6
- 10
- 12
- 8
- 矩阵链乘:矩阵A1(10x30), A2(30x5), A3(5x60)。求最小乘法次数() {{ select(4) }}
- 4500
- 3000
- 1500
- 2000
- 当n=5时,输出什么?()
#include <iostream>
#include <vector>
using namespace std;
int fib(int n) {
if (n <= 1) return n;
vector<int> dp(n+1, 0);
dp[0] = 0;
dp[1] = 1;
for (int i = 2; i <= n; i++) {
dp[i] = dp[i-1] + dp[i-2];
}
return dp[n];
}
int main() {
cout << fib(5);
return 0;
}
{{ select(5) }}
- 3
- 5
- 8
- 13
- 以下代码的运行结果是()
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int knapsack(int W, vector<int>& wt, vector<int>& val, int n) {
vector<vector<int>> dp(n+1, vector<int>(W+1, 0));
for (int i = 1; i <= n; i++) {
for (int w = 1; w <= W; w++) {
if (wt[i-1] <= w) {
dp[i][w] = max(val[i-1] + dp[i-1][w - wt[i-1]], dp[i-1][w]);
} else {
dp[i][w] = dp[i-1][w];
}
}
}
return dp[n][W];
}
int main() {
int W = 4;
vector<int> wt = {1, 2, 3};
vector<int> val = {2, 3, 4};
int n = 3;
cout << knapsack(W, wt, val, n);
return 0;
}
{{ select(6) }}
- 5
- 6
- 7
- 8
- 石子合并:有4堆石子,每堆重量分别为[1,2,3,4],每次合并相邻两堆,代价为两堆重量和,求最小总代价。()
{{ select(6) }}
- 18
- 19
- 20
- 21
- 给定字符串"abcba",最长回文子序列的长度是多少?()
{{ select(8) }}
- 3
- 4
- 5
- 2
- 完全背包问题:背包容量为5,物品重量和价值分别为:物品1(1,2)、物品2(2,3)、物品3(3,4)。每个物品无限个。求最大价值。() {{ select(9) }}
- 7
- 8
- 9
- 10
- 爬楼梯问题:有n阶楼梯,每次可以爬1或2个台阶,爬到顶部有多少种不同的方法?当n=4时,答案是多少?() {{ select(10) }}
- 3
- 4
- 5
- 6