luyencode / comments

Server lưu trữ bình luận trên Luyện Code
https://luyencode.net
6 stars 3 forks source link

https://oj.luyencode.net/problem/DPCNTPALIN #850

Open utterances-bot opened 1 year ago

utterances-bot commented 1 year ago

Chi tiết bài tập - Luyện Code Online

https://oj.luyencode.net/problem/DPCNTPALIN

hoangdev0 commented 1 year ago

Đây là lời giải của mình đã AC. C++.

Xem code AC

```c++ #include using namespace std; bool palin[1001][1001]; int f[1001]; int n; string s; int main() { getline(cin, s); n = s.size(); s = '1' + s; for (int i = 1; i <= n; i++) { palin[i][i] = true; int l = i - 1, r = i + 1; while (l != 0 && r != n + 1) if (s[l] == s[r]) palin[l--][r++] = true; else break; if (s[i] == s[i + 1]) { palin[i][i + 1] = true; l = i - 1; r = i + 2; while (l > 0 && r <= n) if (s[l] == s[r]) palin[l--][r++] = true; else break; } } f[1] = 1; for (int i = 2; i <= n; i++) { f[i] = f[i - 1] + 1; for (int j = i - 1; j >= 1; j--) if (palin[j][i] == true) f[i] = min(f[i], f[j - 1] + 1); } cout << f[n]; return 0; } ```