【題意】:矩陣連乘,找到最小次數,同時輸出括號的巢狀方式
【分析】:經典的區間dp,並且記錄下了dp的path
因為是遞迴得到的path,所以遞迴壓棧按從裡到外的順序得到path就可以了
輸出巢狀括號部分很好的考察了對棧的理解,和遞迴執行的順序。
注意題目輸出中有的地方有空格。
【**】:
1//zoj1276 路徑輸出用到了棧的思想,比較考驗思維
2 #include3 #include
4 #include5
#define maxn 13
6using
namespace
std;
7intn;8
inta[maxn],b[maxn],dp[maxn][maxn],path[maxn][maxn];
9int cas=0;10
int dp(int i,int
j)21}22
return
dp[i][j];23}
24void print(int i,int
j)30
31print(i,path[i][j]);
32 printf("x "
);33 print(path[i][j]+1
,j);
3435
if (i")"
);3637}
38int
main()
45 memset(dp,-1,sizeof
(dp));
46//
for(int i=1;i47 printf("
case %d:
",cas);
48 dp(1
,n);
49//
cout<50 print(1
,n);
51 printf("\n"
);5253}
54return0;
5556 }
zoj3541 區間dp求方案
題目鏈結 先吐槽一下hdu的spj,死都過不了,uva和zoj上都能過。題意就是一排上有很多燈,給你每個燈按下去後能亮的時間和座標 人每秒走一格 首先發現列舉起點做不了,所以要列舉終點。這裡有乙個很有用的結論,就是每個燈我只關心最後一次路過的時間,而從某個點一直按到結束的合法方案中,我們要麼直接走到...
zoj 3537 區間dp 計算幾何
題意 給定n個點的座標,先問這些點是否能組成乙個凸包,如果是凸包,問用不相交的線來切這個凸包使得凸包只由三角形組成,根據costi,j xi xj yi yj p算切線的費用,問最少的切割費用。題解 點我 2015 07 20 專題複習 稍微修改了一下,順便發現題號寫錯了 1 include2 in...
poj 1141 區間dp 列印路徑
題意 定義合法的括號序列如下 1 空序列是乙個合法的序列 2 如果s是合法的序列,則 s 和 s 也是合法的序列 3 如果a和b是合法的序列,則ab也是合法的序列 例如 下面的都是合法的括號序列 下面的都是非法的括號序列 給定乙個由 和 組成的序列,找出以該序列為子串行的最短合法序列。解題思路 這題...