首页 > 其他 > 详细

Light oj 1044 - Palindrome Partitioning(区间dp)

时间:2016-10-14 13:59:55      阅读:133      评论:0      收藏:0      [点我收藏+]

题目链接:http://lightoj.com/volume_showproblem.php?problem=1044

dp[i][j]表示i到j直接的最小回文区间个数,直接看代码

 1 #include <bits/stdc++.h>
 2 using namespace std;
 3 const int N = 1e3 + 5;
 4 int dp[N][N], inf = 1e9;
 5 char str[N];
 6 bool judge(int l, int r) {
 7     for(int i = l - 1, j = r - 1; i < j; ++i, --j) {
 8         if(str[i] != str[j])
 9             return false;
10     }
11     return true;
12 }
13 int dfs(int l, int r) {
14     if(l == r)
15         return dp[l][l] = 1;
16     if(l > r)
17         return 0;
18     if(dp[l][r] < inf)
19         return dp[l][r];
20     int ans = inf;
21     for(int i = r; i >= l; --i) {
22         if(judge(i, r))
23             ans = min(ans, dfs(l, i - 1) + 1);
24     }
25     return dp[l][r] = ans;
26 }
27 
28 int main()
29 {
30     int t;
31     scanf("%d", &t);
32     for(int ca = 1; ca <= t; ++ca) {
33         scanf("%s", str);
34         int len = strlen(str);
35         for(int i = 1; i <= len; ++i) {
36             for(int j = 1; j <= len; ++j) {
37                 dp[i][j] = inf;
38             }
39         }
40         printf("Case %d: %d\n",ca, dfs(1, len));
41     }
42     return 0;
43 }

 

Light oj 1044 - Palindrome Partitioning(区间dp)

原文:http://www.cnblogs.com/Recoder/p/5959814.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!