码迷,mamicode.com
首页 > 其他好文 > 详细

Light oj 1044 - Palindrome Partitioning(区间dp)

时间:2016-10-14 14:02:28      阅读:144      评论: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
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!