• LightOJ 1422 Halloween Costumes 【 区间dp 】


    区间dp的第一题-----

    看题解看了好多~~终于看懂了---55555

    dp[i][j] 表示第i天到第j天至少需要多少件衣服

    那么第i件衣服只被第i天占用的话, dp[i][j] = dp[i+1][j] + 1

    如果不只被第i天占用的话,那么假设在第k天和第i天穿一样的衣服,dp[i][j] = dp[i+1][k-1] + dp[k][j]

    这一篇讲得很详细~

    http://blog.csdn.net/tc_to_top/article/details/44830317

     1 #include<cstdio>
     2 #include<cstring>
     3 #include<iostream>
     4 #include<algorithm>
     5 #include<cmath>
     6 using namespace std;
     7 
     8 int dp[505][505];
     9 int a[505];
    10 int n;
    11 
    12 int main(){
    13     int T;
    14     int kase = 0;
    15     scanf("%d",&T);
    16     while(T--){
    17         scanf("%d",&n);
    18         for(int i = 1;i <= n;i++) scanf("%d",&a[i]);
    19         
    20         for(int i = 1;i <= n;i++)
    21          for(int j = i;j <= n;j++) dp[i][j] = 1;
    22          
    23          for(int i = n-1;i >= 1;i--){
    24              for(int j = i;j <= n;j++){
    25                  dp[i][j] = dp[i+1][j] + 1;
    26                  for(int k = i+1;k <= j;k++){
    27                      if(a[k] == a[i]) dp[i][j] = min(dp[i][j],dp[i+1][k-1] + dp[k][j]);
    28                  //    printf("dp[%d][%d] = %d
    ",i,j,dp[i][j]);
    29                  }
    30              }
    31          }
    32          printf("Case %d: %d
    ",++kase,dp[1][n]);
    33     }
    34     return 0;
    35 }
    View Code

    用记忆化搜索写半天都木有写出来啊啊啊啊~~~

    初始化还是不懂写啊~~~

    该滚了~~~

  • 相关阅读:
    Eclipse远程调试,服务器为linux的配置
    关于javascript代码执行时间的计算
    Java编程中容易疏忽的知识点
    为什么要开发自己的框架、平台或插件
    算法在计算中的作用
    程序员的自豪感
    iOS,Objective-C Runtime
    iOS,本地化(国际化)字符
    iOS,应用崩溃日志分析
    iOS,信息加解密
  • 原文地址:https://www.cnblogs.com/wuyuewoniu/p/4735010.html
Copyright © 2020-2023  润新知