黄梓财20191003015

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

1.贪心算法在我看来就是每一步都是最优的选择,不断累加的局部最佳选择,最后得到的总结果就是最优解,但这个的前提是每次贪心选择的策划得当,如果策略没选好,最好的结果不一定是最优解,而且可供贪心选择的策略并不是唯一的,不同的选择策略可能最后得到的结果都是最优解。

 

2.

4-1 程序存储问题 (90分)

设有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

#include<iostream>
#include<algorithm>
using namespace std;
int main(){
    int n,l,a[105];
    cin >> n >> l;
    for(int i=0;i<n;i++){
        cin >> a[i];
    }
    sort(a,a+n);
    int count = 0;
    for(int i=0;i<n;i++){

        if(l >= a[i]){
            l -= a[i];
            count++;
        }
    }
    cout << count << endl;
    return 0;
} 

我使用的是优先选择最短的磁带,

已知样例的最优解为: 2 3 8 13 20 

假设最短优先的选择策略得到的结果不算最优解,则最短优先得到的结果:2 3 8 13 20 不是最优解,与已知的结论矛盾,所以最短优先选择策略可以得到最优解。

 

3.

这章的题目不算太难,但也是有难点的,比如4-2 删数问题,我与同伴的想法一开始是一样的,但是后来我发现错误,我们的做法改变了原本的排序,我跟我的同伴说了错误的原因,以及应该如何避免错误,但是他有点固执,不过后面他也及时发现了错误,并且找到了正确的解法,还交会我怎么才是正解(感动),结对编程真的太棒了!

 
posted on 2020-11-14 21:51  黄梓财  阅读(96)  评论(0编辑  收藏  举报