zoukankan      html  css  js  c++  java
  • [hihocoder]01背包 accept 与 time limit exceed的代码比较

    链接:http://hihocoder.com/problemset/problem/1038?sid=469496

    accept代码:

     1 #include <iostream>
     2 #include <algorithm>
     3 using namespace std;
     4 
     5 int dp[501][100001];
     6 int need[501];
     7 int value[501];
     8 
     9 int main()
    10 {
    11     int num,amount;
    12     cin>>num>>amount;
    13     for(int i=1;i<=num;i++)
    14     {
    15         cin>>need[i]>>value[i];
    16     }
    17 
    18     for(int j=1;j<=num;j++)
    19     {
    20         for(int i=0;i<=amount;i++)
    21         {
    22             if(i<need[j])
    23             {
    24                 dp[j][i]=dp[j-1][i];
    25             }
    26             else
    27             {
    28                 dp[j][i]=max(dp[j-1][i],(dp[j-1][i-need[j]]+value[j]));
    29             }
    30         }
    31     }
    32 
    33     cout<<dp[num][amount]<<endl;
    34     return 0;
    35 }

    TLE代码:

     1 #include <iostream>
     2 #include <algorithm>
     3 using namespace std;
     4 
     5 int dp[100001][501];
     6 int need[501];
     7 int value[501];
     8 
     9 int main()
    10 {
    11     int num,amount;
    12     cin>>num>>amount;
    13     for(int i=1;i<=num;i++)
    14     {
    15         cin>>need[i]>>value[i];
    16     }
    17 
    18     for(int j=1;j<=num;j++)
    19     {
    20         for(int i=0;i<=amount;i++)
    21         {
    22             if(need[j]>i)
    23             {
    24                 dp[i][j]=dp[i][j-1];
    25             }
    26             else
    27             {
    28                 dp[i][j]=max(dp[i][j-1],(dp[i-need[j]][j-1]+value[j]));
    29             }
    30         }
    31     }
    32 
    33     cout<<dp[amount][num]<<endl;
    34     return 0;
    35 }

    两段代码的唯一区别就是二维数组定义的顺序:dp[物品数][背包容量]——dp[背包容量][物品数]。

    为什么呢?

  • 相关阅读:
    Hdu 5396 Expression (区间Dp)
    Lightoj 1174
    codeforces 570 D. Tree Requests (dfs)
    codeforces 570 E. Pig and Palindromes (DP)
    Hdu 5385 The path
    Hdu 5384 Danganronpa (AC自动机模板)
    Hdu 5372 Segment Game (树状数组)
    Hdu 5379 Mahjong tree (dfs + 组合数)
    Hdu 5371 Hotaru's problem (manacher+枚举)
    Face The Right Way---hdu3276(开关问题)
  • 原文地址:https://www.cnblogs.com/lsr-flying/p/4739823.html
Copyright © 2011-2022 走看看