第4章貪心算法實驗總結


1、題目名稱:程序存儲問題 

 

2、問題描述:

設有n 個程序{1,2,…, n }要存放在長度為L的磁帶上。程序i存放在磁帶上的長度是 li,1≤i≤n。 程序存儲問題要求確定這n 個程序在磁帶上的一個存儲方案, 使得能夠在磁帶上存儲盡可能多的程序。 對於給定的n個程序存放在磁帶上的長度,計算磁帶上最多可以存儲的程序數。

輸入格式:

第一行是2 個正整數,分別表示文件個數n和磁帶的長度L。接下來的1行中,有n個正整數,表示程序存放在磁帶上的長度。

輸出格式:

輸出最多可以存儲的程序數。

輸入樣例:

在這里給出一組輸入。例如:

6 50 
2 3 13 8 80 20

輸出樣例:

在這里給出相應的輸出。例如:

5

3、算法描述:

#include<bits/stdc++.h>
using namespace std;

int n;
int l;
int i;
int a[200];
int length=0;
int sum=0;

int main(){
cin>>n>>l;
for(i=0; i<n; i++){
cin>>a[i];
}
sort(a,a+n);
for(i=0; i<n; i++) {
length+=a[i];
if(length<=l){
sum++;
}
}

cout<<sum;
return 0;
}

 

4、貪心策略:程序長度越小越好

 

5、心得體會

貪心算法得到的是局部最優解,不是對所有問題都能得到整體最優解,關鍵是貪心策略的選擇。所以能用動態規划求解的問題不一定能用貪心算法求解,但能用貪心算法求解的問題一定能用動態規划求解。貪心算法一般用來解決求最大或最小解。

 


免責聲明!

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



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