刷水題(四)


這是我刷水題的第四天。有n道水題可刷,做出第i道水題需要a[i]分鍾。我最多能刷t分鍾水題。我想讓空閑時間越少越好,請問空閑時間最少幾分鍾?

【輸入】

第一行兩個整數n和t,第二行n個整數,第i個整數a[i]表示做第i道水題所需要的時間。

【輸出】

一個整數,表示最少的空閑時間。

【樣例輸入】

4 50

12 23 34 45

【樣例輸出】

4

【輸出說明】

50-12-34=4(分鍾)

題解:

01背包改一改,直接上代碼(為什么第13行要從后往前循環呢?你可以試一試)

 1 #include<iostream>  
 2 using namespace std;                                      代
 3 int n,t;                                                  碼
 4 int a[1005];                                              保
 5 int dp[1005]={1};                                         護
 6 int main()                                                模
 7 {                                                         式
 8     cin>>n>>t;                                            已
 9     int i,j;                                              開
10     for(i=1;i<=n;i++)                                     啟
11         cin>>a[i];                                        ,
12     for(i=1;i<=n;i++)                                     請
13         for(j=t;j>=1;j--)                                 勿
14             if(j>=a[i]&&dp[j-a[i]]==1)                    復
15                 dp[j]=1;                                  制
16     for(i=t;i>=0;i--)                                     ,
17         if(dp[i]==1)                                      歡
18             break;                                        迎
19     cout<<t-i;                                            參
20     return 0;                                             考
21 }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM