算法设计与分析第四章作业

软工2101叶颖勤 2022-11-21 22:46:00

1、请说明作业三”程序存储问题“的贪心策略,并用反证法证明满足贪心选择性质,并给出时间复杂度分析

#include<iostream>
#include<algorithm>
#define MAX 10000
using namespace std;
int main()
{
    int a[MAX];
    int n,l;
    cin>>n>>l;
    for(int i=0;i<n;i++) cin>>a[i];
    sort(a,a+n);
    int sum =0;
    int k = 0;
    for(int i=0;i<n;i++)
    {
        sum += a[i];
        if(sum <= l)
        {
            k++;
        }
        else break;    
    }
    cout<<k;
    return 0;
}

贪心策略:选择尽可能少占用位置的程序,直到不能再放进程。

反证法:设当前最优解为A,不包括最短的程序,而当前最优解A与真正的最优解B有|A|<=|B|,与最优解矛盾。所以贪心选择应该选每次最短的程序。

时间复杂度:排好序后,最多遍历全部数组,时间复杂度为O(n)。

2、你对贪心算法的理解

根据题目来,尽可能找最多的子结构。还要有一定的数理基础,知道怎么样最多/最少的满足题目。

...全文
13 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
CSDN-Ada助手 2023-01-13
  • 打赏
  • 举报
回复
您可以前往 CSDN问答-数据结构与算法 发布问题, 以便更快地解决您的疑问

434

社区成员

发帖
与我相关
我的任务
社区描述
广东外语外贸大学信息科学与技术学院
算法 高校
社区管理员
  • brisksea
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧