1.對貪心算法的理解
在使用貪心算法時(shí),需要保證整體問題的最優(yōu)解包含目前最優(yōu)子問題的解,這是與動(dòng)態(tài)規(guī)劃很像的,可以說貪心算法就是一種特殊的動(dòng)態(tài)規(guī)劃,然后我們要找出方法解決最優(yōu)子問題,運(yùn)用到整個(gè)問題上,依次解決所有子問題,最后得出整體問題最優(yōu)解。
2.選擇一道作業(yè)題目說明你的算法滿足貪心選擇性質(zhì)
設(shè)有n 個(gè)程序{1,2,…, n }要存放在長度為L的磁帶上。程序i存放在磁帶上的長度是 li,1≤i≤n。 程序存儲(chǔ)問題要求確定這n 個(gè)程序在磁帶上的一個(gè)存儲(chǔ)方案, 使得能夠在磁帶上存儲(chǔ)盡可能多的程序。 對于給定的n個(gè)程序存放在磁帶上的長度,計(jì)算磁帶上最多可以存儲(chǔ)的程序數(shù)。
輸入格式:
第一行是2 個(gè)正整數(shù),分別表示文件個(gè)數(shù)n和磁帶的長度L。接下來的1行中,有n個(gè)正整數(shù),表示程序存放在磁帶上的長度。
輸出格式:
輸出最多可以存儲(chǔ)的程序數(shù)。
輸入樣例:
在這里給出一組輸入。例如:
6 50
2 3 13 8 80 20
輸出樣例:
在這里給出相應(yīng)的輸出。例如:
5
#include<iostream>
#include<algorithm>
using namespace std;
int main(){
int n,l;
int num=0;
int x=0;
cin>>n>>l;
int a[n];
for(int i=0;i<n;i++)
cin>>a[i];
sort(a,a+n);
for(int i=0;i<n;i++)
{
x=x+a[i];
if(x> l) break;
else num++;
}
cout<<num;
return 0;
}
說明:從這里可以看出只需要將整個(gè)問題分為無數(shù)個(gè)磁帶與現(xiàn)有長度疊加的子問題就可以解決,所以將整個(gè)問題分為子問題再加以解決的是沒問題的。
3.結(jié)對編程情況
結(jié)對編程漸漸步入正軌,我依據(jù)各自情況形成了自己的考慮分工,正在穩(wěn)步提升各自的編程水平,取長補(bǔ)短,爭取更上一層樓。

浙公網(wǎng)安備 33010602011771號