当前位置:文档之家› 第4章贪心算法习题(免费阅读)

第4章贪心算法习题(免费阅读)

6
算法实现题4-5 程序存储问题
数据输入:
第一行是2 个正整数,分别表示文件个数n和磁带的长 度L。接下来的1 行中,有n个正整数,表示程序存放在磁 带上的长度。
结果输出: 最多可以存储的程序数。
输入示例
6 50
2 3 13 8 80 20 输出示例
5
i 012345
x 2 3 13 8 80 20 7
3
算法实现题4-5 程序存储问题
问题描述: 设有n 个程序{1,2,…, n }要存放在长度为L的磁带上。
程序i存放在磁带上的长度是 li,1 ≤ i ≤ n。 程序存储问题要求确定这n 个程序在磁带上的一个
存储方案,使得能够在磁带上存储尽可能多的程序。 编程任务:
对于给定的n个程序存放在磁带上的长度,编程计 算磁带上最多可以存储的程序数。
532.00
10
算法实现题4-6 最优服务次序问题
double greedy( vector<int> x) {
int i,n=x.size(); sort(x.begin(),x.end()); for(i=1;i<n;++i)
x[i] += x[i-1]; double t=0; for(i=0;i<n;++i) t+=x[i]; t /= n;
算法实现题4-5 程序存储问题
int greedy( vector<int> x, int m){
int i=0, sum=0, n=x.size();
sort(x.begin(),x.end());
while(i
if(sum <= m) i++;
else return i;
对于给定的n个顾客需要的服务时间和s的值,编程 计算最优服务次序。
12
算法实现题4-7 多处最优服务次序问题
数据输入: 第一行有2 个正整数n 和s,表示有n 个顾客且有s
处可以提供顾客需要的服务。接下来的1 行中,有n 个正整数,表示n个顾客需要的服务时间。 结果输出:
最小平均等待时间。 输入示例 10 2 56 12 1 99 1000 234 33 55 99 812 输出示例 336
int i=0,j=0; while(i < n){
su
求和数组
st[j] += x[i];
01
su[j] += st[j]; ++i,++j;
1 12
if(j == s) j=0; i 0 1 2 3 4 5 6 7 8 9
}
x 1 12 33 55 56 99 99 234 812 1000
double t=0; for(i=0;i<s;++i) t += su[i];
14. 嵌套箱问题 15. 套汇问题 16. 信号增强装置问题 17. 磁带最大利用率问题 18. 非单位时间任务安排问题 19. 多元Huffman编码问题 20. 多元Huffman编码变形 21. 区间相交问题 22. 任务时间表问题 23. 最优分解问题 24. 可重复最优分解问题 25. 可重复最优组合分解问题 26. 旅行规划问题 27. 登山机器人问题
定义:
vector<int> x; 读取数据:
int n; scanf(“%d”, &n); int temp; for (int i=0; i<n; i++){
scanf(“%d”, &temp); x.push_back(temp); }
return t;
}
i 01234567 8 9
x 1 12 33 55 56 99 99 234 812 1000
第4章 贪心算法
1
课程安排
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 周二 P P T T P T T P T T P T T T T P
周四 P
P
P
P
P
P
P
P
P
P
P
P
P
P
端午
考试 T
2
第4章 贪心算法
1. 会场安排问题 2. 最优合并问题 3. 磁带最优存储问题 4. 磁盘文件最优存储问题 5. 程序存储问题 6. 最优服务次序问题 7. 多处最优服务次序问题 8. d森林问题 9. 汽车加油问题 10. 区间覆盖问题 11. 硬币找钱问题 12. 删数问题 13. 数列极差问题
}
return n; }
//所有的程序都没有磁带长
i 012345
x 2 3 8 13 20 80
贪心策略:最短程序优先
排序后的数据
8
算法实现题4-6 最优服务次序问题
问题描述: 设有n 个顾客同时等待一项服务。顾客i需要的服务
时间为ti, 1<=i <= n 。应如何安排n个顾客的服务次序 才能使平均等待时间达到最小?平均等待时间是n 个 顾客等待服务时间的总和除以n。 编程任务:
加 1 13 46 101 157 256 355 589 1401 240111
算法实现题4-7 多处最优服务次序问题
问题描述: 设有n 个顾客同时等待一项服务。顾客i需要的服务
时间为ti ,1<= i <= n。共有s 处可以提供此项服务。 应如何安排n 个顾客的服务次序才能使平均等待时间 达到最小?平均等待时间是n个顾客等待服务时间的总 和除以n。 编程任务:
对于给定的n个顾客需要的服务时间,编程计算最 优服务次序。
9
算法实现题4-6 最优服务次序问题
数据输入: 第一行是正整数n,表示有n 个顾客。接下来的1行
中,有n个正整数,表示n个顾客需要的服务时间。 结果输出:
计算出的最小平均等待时间。 输入示例 10
56 12 1 99 1000 234 33 55 99 812 输出示例
排序后的数据
t /= n;
return t; }
14
算法实现题4-9 汽车加油问题
问题描述 一辆汽车加满油后可行驶nkm 。旅途中有若干个加
油站。设计一个有效算法,指出应在哪些加油站停靠 加油,使沿途加油次数最少。 编程任务
对于给定的n和k个加油站位置,编程计算最少加油 次数。
13
算法实现题4-7 多处最优服务次序问题
double greed(vector<int> x,int s) {
vector<int> st(s+1,0); vector<int> su(s+1,0); int n = x.size();
st
服务数组
01
1 12
sort(x.begin(),x.end());
相关主题