题目链接:
题目大意:去参加派对,有n场派对,每场派对要穿第ai种衣服,可以选择外面套一件,也可以选择脱掉。问至少需要穿多少次衣服。
解题思路:
初始化dp[i][i]=1,表示一场派穿一件衣服,设dp[i][j]表示i~j最少需要穿几次衣服,
得到状态转移方程:dp[i][j]=min(dp[i][j],dp[i][k]+dp[k+1][j])(i<=k<j)
若a[i]==a[j]那么代表在起点穿该件衣服,终点可以脱掉之前的衣服用之前的衣服。所以答案需要-1。
代码:
1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #include 9 #include 10 #include