首页 > 其他分享 >POJ - 2955 Brackets(区间dp)

POJ - 2955 Brackets(区间dp)

时间:2023-04-07 11:07:49浏览次数:46  
标签:int len ++ POJ str 2955 include dp


题目大意:给出一个括号字符串,问这个字符串中符合规则的最长子串的长度

解题思路:区间dp,用dp[i][j]表示[i,j]这个区间内有符合规则的最长子串的长度
如果str[i] 和str[j]能构成 ()或者[],那么dp[i][j] = dp[i + 1][j - 1] + 2
剩下的情况就是
dp[i][j] = max(dp[i][j], dp[i][k] + dp[k + 1][j])

#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
const int N = 110;

char str[N];
int dp[N][N];

void solve() {
    int len = strlen(str);
    memset(dp, 0, sizeof(dp));

    for (int i = 1; i < len; i++)
        for (int j = 0; j + i < len; j++) {
            int k = j + i;
            if ( (str[j] == '(' && str[k] == ')') || (str[j] == '[' && str[k] == ']')) dp[j][k] = dp[j + 1][k - 1] + 2;
            for (int l = j; l < k; l++) 
                dp[j][k] = max(dp[j][l] + dp[l  + 1][k], dp[j][k]);
        }
    printf("%d\n", dp[0][len - 1]);
}

int main() {
    while (scanf("%s", str)) {
        if (strcmp(str, "end") == 0) break;
        solve();
    }
    return 0;
}


标签:int,len,++,POJ,str,2955,include,dp
From: https://blog.51cto.com/u_10970600/6175566

相关文章

  • POJ - 3666 Making the Grade(DP)
    题目大意:给你一个数组A,要求将这个数组变成数组B,使得Sum(abs(A[i]-B[i]))达到最小,且B是单调的解题思路:因为答案要求输出单调非递增或者单调非递减的的任意一个,那就只考虑单调非递增吧,因为两个的思路是相同的如果要变化的话,且变化的值要达到最小的话,那么只能变成和前一个相同或者......
  • POJ - 3186 Treats for the Cows(DP)
    题目大意:给你一个数组,每次你可以取两个数中的一个进行操作,要么取数组的第一个,要么数组的最后一个(取完之后,该数删除)假设取出来的数组组成了A现在要求使Sum=A[1]*1+A[2]*2+A[3]*3…+A[n]*n达到最大解题思路:用dp[i][j]表示前面取了i个,后面取了j个最大值则转......
  • POJ - 1661 Help Jimmy(DP)
    题目大意:中文题解题思路:因为是垂直下降,所以就可以将问题转变成从降落的平台到地面的最小时间因为只能从平台的左边或者右边才可以离开平台,所以可以分别计算出从左边和从右边到达地面的最短时间,并记录#include<cstdio>#include<cstring>#include<algorithm>usingnamespace......
  • POJ - 3616 Milking Time(DAG)
    题目大意:给出N头牛的产奶时间段和产奶量,每接完一头牛的奶后,需要休息R分钟问如何选择牛,才能使接到的产奶量达到最大解题思路:DAG,按产奶的结束时间大小排序#include<cstdio>#include<cstring>#include<algorithm>usingnamespacestd;constintN=1010;structInterval{......
  • HDU 5479 Scaena Felix(DP)
    题目大意:给出一系列的由’(‘和’)’组成的字符串,现有一种操作,可以将括号的方向变反,但需要花费1现在问,需要花费多少的代价才能使该字符串的任意一个连续子串都不存在”()”的配对解题思路:用dp[i][0]表示第i个位置变成’(‘的代价,dp[i][1]表示第i个位置变成’)’的代价如果当前......
  • 两种保存状态的方法getSharedPreferences和onSaveInstanceState
    虽然这些东西很简单有时候还真的让你搞混@OverrideprotectedvoidonPause(){super.onPause();SharedPreferencesprefs=getSharedPreferences("X",MODE_PRIVATE);Editoreditor=prefs.edit();editor.putString("lastAct......
  • SQLiteOpenHelper&SharedPreferences练习
    目录结构:packagecom.dc.app;importjava.text.DecimalFormat;importjava.util.Locale;importandroid.app.Activity;importandroid.app.AlertDialog;importandroid.app.Dialog;importandroid.app.Notification;importandroid.app.Notificati......
  • udp协议的时间服务器
    #include<stdio.h>#include<stdlib.h>#include<sys/socket.h>#include<netinet/in.h>#include<arpa/inet.h>#include<errno.h>#include<string.h>#include<time.h>constintmaxline=4096;char*sock_nt......
  • udp协议的获取时间的客户端
    #include<stdio.h>#include<stdlib.h>#include<sys/socket.h>#include<netinet/in.h>#include<arpa/inet.h>#include<errno.h>#include<string.h>constintmaxline=4096;voiddg_cli(FILE*fp,intsockfd,stru......
  • 【wordpress】wordpress插件之自动采集发布工具
    前言安装好wordpress后,就要开始发布文章,由于之前的文章分散在各个平台,想要一个个拷贝过去,的确费时费力,所以想要一劳永逸的解决这个问题,就要用到今天介绍的这个采集工具插件安装搜索:FatRatCoolect然后点击现在安装如果因为网速慢下载不下来,可以直接到官网下载然后上传:cd/wp-con......