标题:求助 求高手讲下列程序中的宏定义改成全局函数 (能够在运行时随意设定)
取消只看楼主
andongtianzi
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2010-6-29
结帖率:40%
已结贴  问题点数:10 回复次数:2 
求助 求高手讲下列程序中的宏定义改成全局函数 (能够在运行时随意设定)
#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
andongtianzi
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2010-6-29
得分:0 
回复 2楼 韩明海
不是,我的意思是可以在运行时,随意输入物品的种类和限重,而不是一开始就利用宏定义固定好的数据!
2010-07-02 19:41
andongtianzi
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2010-6-29
得分:0 
回复 5楼 hnliji1107
那具体的怎么改?
2010-07-03 13:01



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-311961-1-1.html




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

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