| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1137 人关注过本帖
标题:窃贼问题,但是写出来系统提示越界了0.0,请教
只看楼主 加入收藏
卜算子
Rank: 1
等 级:新手上路
帖 子:86
专家分:8
注 册:2016-9-18
结帖率:82.35%
收藏
已结贴  问题点数:20 回复次数:5 
窃贼问题,但是写出来系统提示越界了0.0,请教
窃贼问题:
一个小偷背包最多装8公斤物品,
物品1:6 48(价值)
物品2:5 40
物品3:2 12
物品4:1 8
物品5:1 7
求拿到物品最大价值的方案
以下是代码
#include <stdio.h>
#define N 5
void ss(int *a,int i,int *b,int *p,int x,int max,int l)
{
int m[N],t[N],o[N],j;//m[N],用来接收重量。t[N],储存方案。o[N]价值,j贮存上一次价值总和//
for(j=0;j<N;j++)
{
   m[N]=*b++;
}
for(j=0;j<N;j++)
{
   o[N]=*p++;
}
for(j=0;j<N;j++)
{
  t[j]=*a++;
}
t[i]=m[i];//增加方案//
max+=o[i];//价值增长//
x+=t[i];//重量增长//
    if(x>8&&i<N)
{
t[i]=0;
max-=o[i];
i++;
ss(t,i,m,o,x,max,l);//递归调用//
}
    else if(x<8&&i<N)//增加元素//
    {
        ss(t,i,m,o,x,max,l);
    }

    else if(x==8&&i<N)
    {
        if(j>max&&i<(N-1))
        {
            t[i]=0;
            max-=o[i];
            ss(t,i,m,o,x,max,l);
         }
         else if(i==(N-1))
        {
            printf("%d",t[i]);//输出方案//
            printf("%d",max);//输出最大价值//
        }
    }
    j=max;
}
main()
{
    int i,max,q[N],p[N],m[N],x,l;
    max=0;   
    x=0;
    l=0;
    printf("输入小偷可选择物品重量\n");
    for(i=0;i<N;i++)
    {
   
    scanf("%d",&m[i]);
}//输入可选重量//
    for(i=0;i<N;i++)
    {
        q[i]=0;
    }//将集合全部归零//
    printf("请输入对应价值\n");
    for(i=0;i<N;i++)
    {
   
        scanf("%d",&p[N]);
    }    //输入可选价值//
    i=0;
    ss(q,i,m,p,x,max,l);
}

[此贴子已经被作者于2016-12-7 19:13编辑过]

2016-12-07 19:01
吹水佬
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:451
帖 子:10609
专家分:43210
注 册:2014-5-20
收藏
得分:5 
原码直接运行未见异常提示
2016-12-08 07:29
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
收藏
得分:5 
忽略,再看看

[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2016-12-08 07:53
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
收藏
得分:10 
m[N]=*b++,N为定值,应该是m[j]吧~

[此贴子已经被作者于2016-12-8 07:58编辑过]


[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2016-12-08 07:56
卜算子
Rank: 1
等 级:新手上路
帖 子:86
专家分:8
注 册:2016-9-18
收藏
得分:0 
回复 4楼 九转星河
对哦,谢谢

岂曰无衣,与子同袍!
2016-12-08 08:43
marlow
Rank: 6Rank: 6
等 级:侠之大者
威 望:2
帖 子:125
专家分:419
注 册:2016-7-18
收藏
得分:0 
void ss(int *a, int i, int *b, int *p, int x, int max, int l)最后一个参数起什么作用?

一切都在学习、尝试、摸索中
2016-12-08 08:55
快速回复:窃贼问题,但是写出来系统提示越界了0.0,请教
数据加载中...
 
   



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

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