| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1011 人关注过本帖
标题:求助 求高手讲下列程序中的宏定义改成全局函数 (能够在运行时随意设定)
只看楼主 加入收藏
andongtianzi
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2010-6-29
结帖率:40%
收藏
已结贴  问题点数:10 回复次数:5 
求助 求高手讲下列程序中的宏定义改成全局函数 (能够在运行时随意设定)
#include<stdio.h>
#include<windows.h>
#define N 5             //物品的数目
#define WEIHT 50         //背包的限重    (请将“N”和“WEIGHT”改成全局变量,以满足在运行过程中随意设定“数目和限重”。这是典型的背包问题)

float maxratio= 0;       // 记录最大比值
float preratio= 0;       // 记录当前比值

float WOH=0;             //记录最后包的价值
float WET=0;             //记录最后包的重量
float Preworth= 0;       // 记录当前背包总价值
float Preweight= 0;      //记录当前背包总重量

float weight[N];         //记录物品的重量
float worth[N];          //记录物品的价值
bool  flag[N];           //记录物品是否被使用
bool   ans[N];            //记录物品的组合

void MAXratio()
{
     int i , j ;
     for(i=0;i<N;++i)
     {
         Preweight+=weight[i];
         if(flag[i]==false&&Preweight<=WEIHT)
         {              
              Preworth+=worth[i];
              flag[i]=true;
              preratio=Preworth/Preweight;
              if(preratio>maxratio)
              {
                   WOH=Preworth;
                   WET=Preweight;
                   maxratio= preratio;
                   for(j=0;j<N;++j)
                   ans[j]=flag[j];
              }
              MAXratio() ;
              Preweight-=weight[i];
              Preworth-=worth[i];
              flag[i]=false;
         }
         else
              Preweight-=weight[i];   
     }
}

int main()
{
    int i ;
    printf("输入背包的重量和价值...\n\n");
    for(i=0;i<N;++i)
    {
         flag[i]=false;
         scanf("%f%f",&weight[i],&worth[i]);
    }
    MAXratio();
    printf("\t最大的比值是%f\n",maxratio) ;
    printf("\t包的重量是%f\n",WET);
    printf("\t包的价值是%f\n",WOH);
    printf("\n\n包的组合是:\n");
   
    for(i=0;i<N;++i)
    if(ans[i])
    printf("\t物品%d",i+1);
    printf("\n");
    system("pause");
    return 1;
}


小弟再次谢过!
搜索更多相关主题的帖子: 定义 函数 全局 
2010-07-02 19:23
韩明海
Rank: 8Rank: 8
等 级:蝙蝠侠
帖 子:253
专家分:749
注 册:2010-4-3
收藏
得分:3 
就改成
int n=5;
int weiht = 50;
不行么?
2010-07-02 19:28
key8714
Rank: 2
等 级:论坛游民
帖 子:48
专家分:87
注 册:2010-6-9
收藏
得分:3 
全局变量不可随意设定
2010-07-02 19:40
andongtianzi
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2010-6-29
收藏
得分:0 
回复 2楼 韩明海
不是,我的意思是可以在运行时,随意输入物品的种类和限重,而不是一开始就利用宏定义固定好的数据!
2010-07-02 19:41
hnliji1107
Rank: 4
等 级:业余侠客
帖 子:53
专家分:216
注 册:2009-10-23
收藏
得分:3 
你的意思我明白,这种情况不要使用顺序表存储了,使用链表存储,因为它是动态分配内存的,不用事先定义范围
2010-07-02 22:26
andongtianzi
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2010-6-29
收藏
得分:0 
回复 5楼 hnliji1107
那具体的怎么改?
2010-07-03 13:01
快速回复:求助 求高手讲下列程序中的宏定义改成全局函数 (能够在运行时随意设定 ...
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.047557 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved