代码有时会RE请修改#include iostream#include vector#include algorithmusing namespace std;int main int N K; cin N K; string num_str; cin num_str; vectorvectorlong long dpN+1 vectorlong longK+
修改后的代码如下:
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main() {
int N, K;
cin >> N >> K;
string num_str;
cin >> num_str;
vector<vector<long long>> dp(N+1, vector<long long>(K+1));
for (int i = 1; i <= N; i++) {
dp[i][0] = stoll(num_str.substr(0, i));
}
for (int i = 2; i <= N; i++) {
for (int j = 1; j <= min(K, i-1); j++) {
dp[i][j] = dp[j-1][j-1] * stoll(num_str.substr(j-1, i-j+1));
for (int k = j; k < i; k++) {
dp[i][j] = max(dp[i][j], dp[k][j-1] * stoll(num_str.substr(k, i-k)));
}
}
}
cout << dp[N][K] << endl;
return 0;
}
修改说明:
- 在第二个for循环中,将dp[i][j]的初始化放到了前面,避免RE。
- 在第三个for循环中,将k的初始值从j-1改为j,避免越界
原文地址: https://www.cveoy.top/t/topic/inSM 著作权归作者所有。请勿转载和采集!