Halloween Costumes

Halloween Costumes

 

 

 

 基础区间dp

AC_Code

 1 #include <bits/stdc++.h>
 2 using namespace std;
 3 typedef long long ll;
 4 const int maxn = 110;
 5 int dp[maxn][maxn];
 6 int col[maxn];
 7 
 8 int main()
 9 {
10     int t,cas=0;
11     scanf("%d",&t);
12     while( t-- ){
13         int n;
14         scanf("%d",&n);
15         for(int i=1;i<=n;i++){
16             scanf("%d",&col[i]);
17         }
18 
19         for(int i=1;i<=n;i++){
20             dp[i][i]=1;
21         }
22         for(int j=2;j<=n;j++){
23             for(int i=1;i<j;i++){
24                 ///第 j 天穿衣
25                 dp[i][j]=dp[i][j-1]+1;
26                 for(int k=i;k<j;k++){
27                     if( col[k]==col[j]){
28                         ///第 j 天不穿,当第 j 天和第 k 天穿的衣服相同,
29                         ///将 k+1 ~ j-1 衣服套着穿后全部脱掉
30                         dp[i][j]=min(dp[i][j],dp[i][k]+dp[k+1][j-1]);
31                     }
32                 }
33             }
34         }
35 
36         printf("Case %d: %d\n",++cas,dp[1][n]);
37     }
38     return 0;
39 }

 

posted @ 2020-02-02 18:22  swsyya  阅读(186)  评论(0编辑  收藏  举报

回到顶部