POJ 1159
區間dp
比如從i到j如果str[i] == str[j]那么i到j的值就與i+1到j-1相同,否則從i到j-1與i+1到j中選一個最優解,這道題直接定義int的二維數組會mle,用short,也可以用滾動數組。
#include<stdio.h> const int maxa = 5005; short dp[maxa][maxa]; char str[maxa]; #define min(a,b) a<b?a:b; int main(){int n;while(scanf("%d", &n)!=EOF){scanf("%s", str);for(int i = 1; i < n; i++){for(int j = 0; j + i < n; j++){if(str[j] == str[j+i]){dp[j][j+i] = dp[j+1][j+i-1];}else{dp[j][j+i] = min(dp[j+1][j+i]+1, dp[j][j+i-1]+1);}}}printf("%d\n", dp[0][n-1]);} } View Code?
轉載于:https://www.cnblogs.com/icodefive/p/4299684.html
總結
- 上一篇: Cross-site Scripting
- 下一篇: 如何提升自我价值