本文共 1469 字,大约阅读时间需要 4 分钟。
2BBAABAAABABBAA
12 #include#include #include #define MAXN 205int dp[MAXN][MAXN];int rem[MAXN][MAXN],remA[MAXN][MAXN],remB[MAXN][MAXN];char s1[MAXN],s2[MAXN];int inite(int len){ int i,j,k,temp; memset(rem, 0, sizeof(rem)); memset(remA, 0, sizeof(remA)); memset(remB, 0, sizeof(remB)); for(i = 0; i < len; i++) { for(j = i; j < len; j++) { temp = 0; if(j)temp = rem[i][j-1]; if(s1[j]!=s2[j]) rem[i][j]=temp + 1; else rem[i][j]=temp; for(k = i; k <= j; k++) { if(s2[k]!=s2[k+1]||(k+1>j)) { if(s2[k]=='A') remB[i][j]++; else remA[i][j]++; } } } } for(i = j = 0;j < len;j++) { if((s1[j]!=s1[j+1])||j+1>=len) { if(s1[j-1]=='A') remA[i][j-1]-=1; else remB[i][j-1]-=1; i = j + 1; } } return 0;}int DP(int l,int r){ int i,temp; if(dp[l][r]!=-1)return dp[l][r]; dp[l][r]=(rem[l][r]<(temp=(remA[l][r]+1)))?rem[l][r]:temp; dp[l][r]=(dp[l][r]<(temp=(remB[l][r]+1)))?dp[l][r]:temp; for(i = l; i < r; i++) { temp = DP(l,i)+DP(i+1,r); if(temp
转载地址:http://zeuvi.baihongyu.com/