zoukankan      html  css  js  c++  java
  • 程序存储问题

    问题:

    设有n 个程序{1,2,…, n }要存放在长度为L的磁带上。程序i存放在磁带上的长度是i l , 1 ≤i ≤n。程序存储问题要求确定这n 个程序在磁带上的一个存储方案,使得能够在磁带上存储尽可能多的程序。对于给定的n个程序存放在磁带上的长度,编程计算磁带上最多可以存储的程序数。

    回答:题目要求计算给定长度的磁带最多可存储的程序个数,先对程序的长度从小到大排序,再采用贪心算法求解。
    算法设计:
    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为所求。

    代码如下:

    #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;
    }

    int main()
    {
    int i,n,s;
    scanf("%d %d ",&n,&s);
    for(i=0;i<n;i++)
    scanf("%d",&a[i]);
    sort(a,a+n);
    printf("%d",most(a,n,s));
    return 0;
    }

  • 相关阅读:
    数据库设计——多表之间的关系
    约束
    DQL
    DML
    DDL
    Mysql——基础
    IT大牛关注链接
    deepin20安装Python3.85
    Python中的模块
    python中的装饰器
  • 原文地址:https://www.cnblogs.com/benchao/p/4521382.html
Copyright © 2011-2022 走看看