商汤2D视觉第二题,股票利润题
#include <bits/stdc++.h>
using namespace std;
const int MAXN = 1e5 + 10;
const int INF = 0x3f3f3f3f;
int a[2][MAXN];
int dp[MAXN][5][5];
int main() {
//freopen("in.txt", "r", stdin);
int n, k, s, l;
scanf("%d%d%d", &n, &k, &s);
for (int i = 0; i < s; i++) {
for (int j = 1; j <= n; j++) {
scanf("%d", &a[i][j]);
}
}
memset(dp, -INF, sizeof(dp));
dp[n + 1][0][0] = 0;
for (int i = n; i >= 1; i--) {
for (int x = 0; x <= k; x++) {
if (s == 1) l = 0;
else l = k - x;
for (int y = 0; y <= l; y++) {
dp[i][x][y] = dp[i + 1][x][y];
if (x + 1 + y <= k)
dp[i][x][y] = max(dp[i][x][y], dp[i + 1][x + 1][y] + a[0][i]);
if (x - 1 >= 0)
dp[i][x][y] = max(dp[i][x][y], dp[i + 1][x - 1][y] - a[0][i]);
if (s == 1) continue;
if (x + y + 1 <= k)
dp[i][x][y] = max(dp[i][x][y], dp[i + 1][x][y + 1] + a[1][i]);
if (y - 1 >= 0)
dp[i][x][y] = max(dp[i][x][y], dp[i + 1][x][y - 1] - a[1][i]);
}
}
}
int ans = 0;
for (int x = 0; x <= k; x++) {
if (s == 1) l = 0;
else l = k - x;
for (int y = 0; y <= l; y++) {
ans = max(ans, dp[1][x][y]);
}
}
printf("%d\n", ans * 100);
return 0;
}
样例都过了,ac0,谁能说一下为什么?#笔试题目##商汤科技#
