Submission #2302458
Source Code Expand
#include <iostream> #include <algorithm> #include <vector> using namespace std; int N; vector<vector<bool>> if_palindrome; // [left, right] vector<int> costs; int dp[5000]; int split(int now){ if(now == N){ return 0; }else if(dp[now] != -1){ return dp[now]; }else{ int ans = 1e9; for(int i = 1; now + i <= N; i++){ if(if_palindrome[now][now + i - 1]){ ans = min(ans, costs[i - 1] + split(now + i)); } } return dp[now] = ans; } } int main(){ string S; cin >> N >> S; costs.resize(N); for(int i = 0; i < N; i++){ cin >> costs[i]; } if_palindrome.resize(N); for(int i = 0; i < N; i++){ if_palindrome[i].resize(N); for(int j = 0; j < N; j++){ if_palindrome[i][j] = false; } } for(int i = 0; i < N; i++){ for(int j = 0; i - j >= 0 && i + j < N; j++){ if(S[i - j] != S[i + j]){ break; } if_palindrome[i - j][i + j] = true; } } for(int i = 0; i < N - 1; i++){ for(int j = 0; i - j >= 0 && i + j + 1 < N; j++){ if(S[i - j] != S[i + j + 1]){ break; } if_palindrome[i - j][i + j + 1] = true; } } fill(dp, dp + 5000, -1); cout << split(0) << endl; }
Submission Info
Submission Time | |
---|---|
Task | C - Palindrome Concatenation |
User | June_boy |
Language | C++ (GCC 5.4.1) |
Score | 0 |
Code Size | 1443 Byte |
Status | CE |
Compile Error
./Main.cpp:7:19: error: ‘>>’ should be ‘> >’ within a nested template argument list vector<vector<bool>> if_palindrome; // [left, right] ^