日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

poj3280Cheapest Palindrome(记忆化)

發(fā)布時間:2023/11/27 生活经验 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 poj3280Cheapest Palindrome(记忆化) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

鏈接

真的1A了。。

一開始想復(fù)雜了 想著補全再刪 沒想好 后來想到遞歸 大的回文串是由小的推過來的?

一直遞歸下去 對于當(dāng)前的i,j可以選擇保留或者刪除 選個最小的

 1 #include <iostream>
 2 #include<cstring>
 3 #include<algorithm>
 4 #include<stdlib.h>
 5 #include<cstdio>
 6 using namespace std;
 7 #define N 2010
 8 #define INF 0xfffffff
 9 int v[500][2];
10 int dp[N][N];
11 char s[N];
12 int dfs(int i,int j)
13 {
14     if(i>j) return 0;
15     if(i==j)
16     return dp[i][j]=0;
17     if(dp[i][j]!=-1)
18     return dp[i][j];
19     if(s[i]==s[j])
20     dp[i][j] = dfs(i+1,j-1);
21     else
22     dp[i][j] = min(dfs(i,j-1)+min(v[s[j]][0],v[s[j]][1]),dfs(i+1,j)+min(v[s[i]][0],v[s[i]][1]));
23     return dp[i][j];
24 }
25 int main()
26 {
27     int i,n,m,a,b;
28     char c;
29     while(scanf("%d%d",&n,&m)!=EOF)
30     {
31         memset(dp,-1,sizeof(dp));
32         cin>>s;
33         for(i = 1; i <= n; i++)
34         {
35             cin>>c>>a>>b;
36             v[c][0] = a;
37             v[c][1] = b;
38         }
39         int ans = dfs(0,m);
40         cout<<ans<<endl;
41     }
42     return 0;
43 }
View Code

?

轉(zhuǎn)載于:https://www.cnblogs.com/shangyu/p/3280750.html

總結(jié)

以上是生活随笔為你收集整理的poj3280Cheapest Palindrome(记忆化)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。