| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 620 人关注过本帖
标题:新手 各位帮忙看下这个程序哪错了。。
只看楼主 加入收藏
宅宅
Rank: 1
等 级:新手上路
帖 子:27
专家分:9
注 册:2013-9-25
结帖率:92.86%
收藏
已结贴  问题点数:10 回复次数:9 
新手 各位帮忙看下这个程序哪错了。。
背景:
        我们寄信都要贴邮票,在邮局有一些小面值的邮票,通过这些小面值邮票中的一张或几张的组合,可以满足不同邮件的不同的邮资。
        现在,邮局有4种不同面值的邮票。在每个信封上最多能贴5张邮票,面值可相同,可不同。

输入:
        四种邮票的面值。

输出:
        用这四种面值组成的邮资最大的从1开始的一个连续的区间。

说明:
        如结果为10,则表明使用4张邮票可组合出1、2、3、4、5、6、7、8、9、10这些邮资。



#include<stdio.h>
#include<stdlib.h>
int main()
{
int a,b,c,d,n,num1,num2,num3,num4;
scanf("%d %d %d %d",&a,&b,&c,&d);
k: for(n=1;n<=10000;n++)
    for(num1=0;num1<=5;num1++)
        for(num2=0;num2<=5;num2++)
                for(num3=0;num3<=5;num3++)
                        for(num4=0;num4<=5;num4++)
                        {
                        if((num1+num2+num3+num4)<=5&&(a*num1+b*num2+c*num3+d*num4)==n){n++;goto k;}
                        if(num1==5&&num2==5&&num3==5&&num4==5) printf("%d",n-1);
                        }
system("pause");
}

运行以后没结果。。。
搜索更多相关主题的帖子: include 最大的 信封 邮票 
2013-10-23 13:52
heroinearth
Rank: 10Rank: 10Rank: 10
来 自:云南曲靖
等 级:青峰侠
帖 子:430
专家分:1506
注 册:2011-10-24
收藏
得分:4 
用这四种面值组成的邮资最大的从1开始的一个连续的区间。
应是最小从1开始的连续正整数,goto完全可以不用。不明白的是你到底要得到什么输出结果



[ 本帖最后由 heroinearth 于 2013-10-23 14:55 编辑 ]
2013-10-23 14:48
hh373231690
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:67
专家分:138
注 册:2012-10-13
收藏
得分:4 
用数组会简单很多,数组下标控制循环
2013-10-23 17:36
宅宅
Rank: 1
等 级:新手上路
帖 子:27
专家分:9
注 册:2013-9-25
收藏
得分:0 
回复 2楼 heroinearth
输出最大的那个数。。
2013-10-23 20:48
宅宅
Rank: 1
等 级:新手上路
帖 子:27
专家分:9
注 册:2013-9-25
收藏
得分:0 
回复 3楼 hh373231690
还没学到数组。。。
2013-10-23 20:49
ly2013023068
Rank: 1
等 级:新手上路
帖 子:1
专家分:4
注 册:2013-10-23
收藏
得分:4 
......
2013-10-23 21:13
heroinearth
Rank: 10Rank: 10Rank: 10
来 自:云南曲靖
等 级:青峰侠
帖 子:430
专家分:1506
注 册:2011-10-24
收藏
得分:0 
以下是引用宅宅在2013-10-23 20:48:53的发言:

输出最大的那个数。。
是不是这样?
程序代码:
#include<stdio.h>
#include<stdlib.h>
int main()
{
int a,b,c,d,n,num1,num2,num3,num4;
scanf("%d %d %d %d",&a,&b,&c,&d);

    for(num1=0;num1<=5;num1++)
        for(num2=0;num1+num2<=5;num2++)
                for(num3=0;num1+num2+num3<=5;num3++)
                        for(num4=0;num1+num2+num3+num4<=5;num4++)
                        {
                            if(num1+num2+num3+num4 > 0)
                                printf("%d ",num1*d+num2*c+num3*b+num4*a);
                        }
system("pause");
}

2013-10-24 09:20
宅宅
Rank: 1
等 级:新手上路
帖 子:27
专家分:9
注 册:2013-9-25
收藏
得分:0 
测试输入
1 3 7 12
期待的输出
The max is 46.

最后就输出连续的那个最大的数。。
2013-10-24 10:17
hh373231690
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:67
专家分:138
注 册:2012-10-13
收藏
得分:0 
回复 8楼 宅宅
41这个数怎么表示
2013-10-24 10:30
宅宅
Rank: 1
等 级:新手上路
帖 子:27
专家分:9
注 册:2013-9-25
收藏
得分:0 
我知道了。。goto k 以后n又变回1了。。
2013-10-24 10:46
快速回复:新手 各位帮忙看下这个程序哪错了。。
数据加载中...
 
   



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

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