商汤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,谁能说一下为什么?
#笔试题目##商汤科技#