• 网络学院
  • IT资讯
  • 操作系统
  • 网络技术
  • 软件应用
  • 办公软件
  • 编程技术
  • 网站架设
  • 数据库类
  • 平面设计
  • 多媒体类
  • 游戏资讯
  • 教学论文
  • 认证考试
计算机二级:C程序设计例解(05)
  站点:
  • 首 页
  • 最新软件
  • 文章教程
  • 国内软件
  • 国外软件
  • 绿色软件
  • 源码下载
  • 字体下载
计算机二级:C程序设计例解(05)
软件发布 计算机二级:C程序设计例解(05)
网络软件 系统工具 应用软件 联络聊天 图形图像 多媒体类 行业软件 游戏娱乐 编程开发 安全相关 教育教学 数码软件 绿软下载
热门软件: QQ 瑞星 pplive e话通 木马克星 千千静听 office2000 五笔字根 Photoshop 视频分割
返回文章教程首页 >> 认证考试 >> 计算机等级考试 >> 计算机二级考试 >> 计算机二级:C程序设计例解(05)

计算机二级:C程序设计例解(05)

添加时间: 2007-5-5 5:59:47  作者: 计算机等级考试认证参考  阅读次数:24   来源: http://www.d9soft.com

       

 
05. 从n个不同价值、不同重量的物品中选取一部分,在不超过限定的总重量的前提下,使该部分的价值最大。这里假定的总重量不超过n个物品的总重量总和,且没有一样物品的重量超过限定的总重量。
解:
    这个问题是求最佳解的典型例子。为找最佳解,需生成所有可能的解。在生成这些解的同时,保留一个指定意义下的当前最佳解,当发现一个更好的解时,就把这个解改为当前最佳解,并保留之。
    现给出一组n个物品中找出满足约束条件的最佳解的通例。为便于构造算法,采用递归方法。构成可接受解的所有选择是通过依次考察组中的各个物品的结果,对每个物品的考察均有两种可能:或所考察的物品被包括在当前选择中,或所考察的物品不被包括在当前选择中。递归函数是描述指定物品被包括或不被包括在当前选择中的计算过程,只要指定物品被包括后重量满足约束条件,该物品被包括是应该被考虑的;仅当一个物品如不被包括也可能达到比当前最佳解所达到的总价值大时,为满足重量的限制,不把该物品包含在当前选择中也是应该被考虑的。为此,递归函数设有三个参数:指定的物品、当前选择已达到的总重量和可能达到的总价值。下面的递归算法就是考察某个物品在当前选择中是否被包括的计算过程描述。
算法---物品i在当前选择中被包括与否的递归算法
try(物品i,当前选择已达到的总重量tw,可能达到的总价值tv)
{
    /*考察当前选择包含物品i的合理性*/
    if(包含物品i是可接受的)
    {
        将物品i包括在当前解中;
        if(i        else
            调整当前最佳解;
        将物品i从当前解中消去;
    }
    /*考察当前选择不包含物品i的合理性*/
    if(i    else
        调整当前最佳解;
}
对当前选择而言,“包含物品i是可接受的”准则是它被包括后,有可能达到的总价值也不小于当前最佳解所达到的价值,因为如果小于的话,继续考察下去也不会产生更好的解。

程序代码如下:
#include
#define N 100
double  limw,            /*物品的约束重量*/
        totv,            /*全部物品的总价值*/
        maxv;            /*解的总价值*/
int    opts[N],        /*当前最佳选择*/
        cs[N];         /*当前选择*/
int     n,             /*物品数*/
        k;             /*工作变量*/
struct{
    double weight;     /*物品的重量*/
    double value;      /*物品价值*/
}a[N];    /*一组物品*/
void tryy(int i,double tw,double tv)
{
    /*考察当前选择物品i的合理性*/
    if(tw+a[i].weight<=limw)        /*包含物品i是可接受的*/
    {
        cs[i]=1;        /*将物品i包括在当前解中*/

       if(i        else
            if(tv>maxv)
            { /*调整当前最佳解*/
                for(k=0;k<=i;k++)
                    opts[k]=cs[k];
                maxv=tv;
            }
            cs[i]=0;        /*将物品i从当前解中消去*/
    }
    /*考察当前选择不包含物品i的合理性*/
    if(tv-a[i].value>maxv)        /*不包含物品i是可接受的*/
        if(i            tryy(i+1,tw,tv-a[i].value);
        else
        {  /*调整当前最佳解*/
            for(k=0;k<=i;k++)
                opts[k]=cs[k];
            maxv=tv-a[i].value;
        }
}
void main()
{
    printf("Enter number of mails. ");
    scanf("%d",&n);
    printf("Enter limit of weight. ");
    scanf("%lf",&limw);
    printf("Enter weight and value of mails. ");
    for(k=0;k        scanf("%lf%lf",&a[k].weight,&a[k].value);
    for(totv=0.0,k=0;k        totv+=a[k].value;
    maxv=0;
    for(k=0;k        opts[k]=cs[k]=0;
    tryy(0,0,totv);
    for(k=0;k        if(opts[k])
            printf("M",k+1);
    printf(" Total value = %lf ",maxv);
}

 

上下文章:

 

上一篇文章: 计算机二级:C程序设计例解(06) 下一篇文章: 计算机二级:C程序设计例解(04)

相关文章:

  • 中国国家计算机病毒中心监测发现蠕虫新变种
  • 09年全国计算机等级考试更新7门教材
  • 确保计算机安全 个人用户责无旁贷
  • 计算机病毒中心:重视微软高危漏洞补丁程序
  • 微软第二代超级计算机版Windows发布在即

相关软件:

  • 二级VB学习系统 1.0
  • 计算机等级考试训练模拟软件(三级数据库技术) V1.01
  • C/C++程序设计学习与实验系统 2008.14
  • 全国计算机等级考试二级VFP上机考试模拟 V1.0
  • 全国计算机等级考试模拟软件(2006年全年使用)二级Visual Basic V9.0
  • 全国计算机等级考试第21次全真模拟系统 20050311

 

快速导航

  • 网络学院
  • 精品汇聚
  • 字体下载
  • 教程下载
  • ASP源码
  • PHP源码
  • Net源码
  • JSP 源码

计算机等级考试分类导航

  • 计算机等级考试动态
  • 计算机一级考试
  • 计算机二级考试
  • 计算机三级考试
  • 计算机四级考试

本类经典文章推荐

  • 2006年全国计算机等级考试二级C考...
  • 《C++编程规范》笔记(设计风格)
  • 如何编写高质量的VB代码
  • VB编程的几个API函数的应用问题
  • VB编程:去掉窗体的关闭按钮
  • 最简Windows编程
  • VB编程:如何在列表框中自动查找
  • VB指导:生成auto-OK对话框
  • 使用VB的布局工具节省编程时间
  • VB中利用Winrar进行文件压缩

计算机二级考试阅读排行

  • 计算机二级:《计算机基础》考试题
  • 2006年全国计算机等级考试二级C考...
  • VB编程:去掉窗体的关闭按钮
  • 计算机二级:计算机基础知识作业题
  • 二级VF程序设计全真预测试卷(一)
  • 全国计算机等级考试二级VISUALFOX...
  • 2005年9月17日二级VF笔试试题答案
  • 《C++编程规范》笔记(设计风格)
  • 二级C语言程序设计试题(含答案)
  • 2005年9月计算机等级考试二级笔试...

计算机等级考试阅读总排行

  • 全国计算机等级考试一级模拟试题01
  • 全国计算机等级考试一级模拟试题10
  • 全国计算机等级考试一级模拟试题08
  • 全国计算机等级考试一级模拟试题02
  • 全国计算机等级考试一级考试最新模...
  • 全国计算机等级考试一级模拟试题07
  • 一级(WINDOWS)试题解析-Word篇
  • 全国计算机等级考试上机考试应试技...
  • 全国计算机等级考试一级模拟试题03
  • 全国计算机等级考试一级模拟试题06

广告位置

字母检索 A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 回到顶部

关于我们 | 版权声明 | 免责条款 | 广告联系 | 软件发布 | 下载帮助 | 下载排行 | 网站地图 | 特别鸣谢 | 友情连接

copyright; 2005-2008 D9soft.com 第九软件网 版权所有