程序存储问题
来源:互联网 发布:windows为什么要激活 编辑:程序博客网 时间:2024/05/17 22:09
程序存储问题
1、问题描述:
设有n 个程序{1,2,…, n }要存放在长度为L的磁带上。程序i存放在磁带上的长度是i l , 1 ≤i ≤n。程序存储问题要求确定这n 个程序在磁带上的一个存储方案,使得能够在磁带上存储尽可能多的程序。对于给定的n个程序存放在磁带上的长度,编程计算磁带上最多可以存储的程序数。
2、题目分析:
题目要求计算给定长度的磁带最多可存储的程序个数,先对程序的长度从小到大排序,再采用贪心算法求解。
3、算法设计:
a. 定义数组a[n]存储n个程序的长度,s为磁带的长度;
b. 调用库函数sort(a,a+n)对程序的长度从小到大排序;
c. 函数most()计算磁带最多可存储的程序数,采用while循环依次对排序后的程序
长度进行累加,用i计算程序个数,用sum计算程序累加长度(初始i=0,sum=0):
① sum=sum+a[i];
② 若sum<=s,i加1,否则i为所求;
③ i=n时循环结束;
d. 若while循环结束时仍有sum<=s,则n为所求。
4、源程序:
#include<iostream>
using namespace std;
#include<algorithm>
int a[1000000];
int most(int *a,int n,int s)
{
int i=0,sum=0;
while(i<n)
{
sum=a[i]+sum;
if(sum<=s)
i++;
else return i;
}
return n;
}
main()
{
int i,n,s;
scanf("%d %d\n",&n,&s);
for(i=0;i<n;i++)
scanf("%d",&a[i]);
sort(a,a+n);
printf("%d",most(a,n,s));
return 0;
}
5、算法分析:
函数most()的时间杂度为Ο(n),主函数调用的库函数sort(a,a+n)的时间复杂度为,且主函数调用函数most(),故该算法的时间杂度为。
0 0
- 程序存储问题
- 程序存储问题
- 程序存储问题
- 程序存储问题
- 程序存储问题
- 程序存储问题
- 程序存储问题(贪心)
- 程序调用存储过程,有问题仅供参考
- 南邮 OJ 1253 程序存储问题
- 算法:(贪心算法)-程序存储问题
- 程序调用查询数据存储过程的问题
- 变量的存储位置和程序的效率问题
- 程序调用存储过程 输出参数返回0的问题
- 数据在机器里的存储问题(c程序)
- VC下MFC程序调用console程序-存储文档的路径问题
- 程序中各种变量的存储位置和程序返回变量的问题
- 程序中各种变量的存储位置和程序返回变量的问题
- 程序中各种变量的存储位置和程序返回变量的问题
- jquery去除回车换行
- HDOJ 题目3456 Universal Oracle(模拟,水)
- 论文中的图目录与表目录
- nagios插件之监控单个tomcat线程数
- Java网络编程-代理
- 程序存储问题
- 大数相加
- THREE.js -- 沿物体表面放置对象
- Clouder CDH Hadoop安装
- HashMap练习题
- 转瞬年华,新的开始
- 算法导论 计数排序
- 《数据结构课程设计》3号题
- vc6.0 GDI+ MFC 配置