首页 新闻 会员 周边

C北理邮票组合题目

0
悬赏园豆:20 [已解决问题] 解决于 2020-03-20 14:09

开始,我是题目不是很理解,后来网上找了找答案,调试了一遍,只是知道程序是怎么跑的,但还是不理解,这种算法题对于我这种基础差点的是不是不太合适?还是继续跟网上的课程走还是自己去找简单的做做, 需不需要买本<<明解C语言>>看看呢?前辈们?

网上找的代码:

include<stdio.h>

int main()
{
int i, j, k, p, a1, a2, a3, a4, m=1, flag;
scanf("%d%d%d%d",&a1,&a2,&a3,&a4);
A: for( i = 0 ; i <= 5 ; i++ )
{
for( j = 0 ; j <= 5 - i ; j++ )
{
for( k = 0 ; k <= 5 - i - j ; k++ )
{
for( p = 0 ; p <= 5 - i - j - k ; p++ )
{
flag = 1 ;
if( a1 * p + a2 * k + a3 * j + a4 * i == m )
{
flag = 0;
m++;
goto A;
}
}
}
}
}
if( flag == 1 ) printf("The max is %d.\n",m-1);
return 0;
}

墨梅渐盛的主页 墨梅渐盛 | 初学一级 | 园豆:82
提问于:2020-03-18 14:20
< >
分享
最佳答案
0

不错了小兄弟,你能读懂题目,我看了两遍都没明白到底要输出个啥。“4种面值组成的最大的从1开始的连续的区间”是什么玩意儿?而示例给出的是个整数,不是说一个“连续区间”吗?不知道是我语文太差还是出题的语文太差。


我好像猜出来是什么意思了。题目的意思是说:给定4种面值的邮票,用它们组合邮资,能组成1,2,3,4,....一直到到n种邮资,每种邮资都比前一种邮资大1,问最大能组的邮资n是多少。

出题的人脑子一团浆糊吧。明明是求一个整数,他说是“区间”,还说是“连续区间”,明明是离散的,这出题的人连高数都没学过,还连续......

收获园豆:20
会长 | 专家六级 |园豆:12401 | 2020-03-18 16:53

我自己在网上找的中国大学Mooc北理的C语言课程的题目,网上也找到了答案,但只是知道程序是怎么跑的,不知道题目啥意思,我觉得我需要换换题目了。

墨梅渐盛 | 园豆:82 (初学一级) | 2020-03-18 16:56

@墨梅渐盛: 我已经猜出来了,你看看我修改过的回答。也是看这个代码猜出来的。你给的这个代码是通过遍历来搞的,虽然可以,但是效率低。我建议可以模拟真实情况来:这样:
首先从1开始试,如果通过则试下一个数,一直到无解的那个数,答案就是这个数的前一个数。那要怎么试:可以这样,给定一个待试数,找最大的比他小的面值,然后抛除这个面值,再找比剩下的邮资小的最大面值,循环往复,就可以了,就是模拟真实场景

会长 | 园豆:12401 (专家六级) | 2020-03-18 17:00

@会长: 没太懂前辈的意思,我觉得实际情况允许的话不是直接贴五张最大面值的吗?当然题目应该不是这个意思。“再找比剩下的邮资小的最大面值”?

墨梅渐盛 | 园豆:82 (初学一级) | 2020-03-18 17:31

@墨梅渐盛: 贴5个最大的?怀疑你没有去过邮局,如果5个最大的加起来大于邮资呢?当然,如果你是土豪就可以。

会长 | 园豆:12401 (专家六级) | 2020-03-18 17:40

@墨梅渐盛:不好意思啊,我那个解题思路是错误的。哈哈。不过问题的原意我没说错。

会长 | 园豆:12401 (专家六级) | 2020-03-18 17:47

@会长: 嗯,谢谢前辈,我以为题目是要求求出最大邮资的,本来想想直接面值最大加起来就可以了,后来觉得不对劲,看了别人的代码就觉得不知道是题目有问题,还是我理解有问题了。

墨梅渐盛 | 园豆:82 (初学一级) | 2020-03-18 17:48

@墨梅渐盛: 我说的结题方法是错的,我刚才写程序了,结果不对,暂时还没想到什么好办法,只能先像你给出的例子那也循环了,应该有更好的办法。至少可以优化:比如:如果邮资值大于最大面值的5倍,那就不用算了;又如果邮资小于最小面值,那也不用算了

会长 | 园豆:12401 (专家六级) | 2020-03-18 17:54

@会长: 好的谢谢前辈

墨梅渐盛 | 园豆:82 (初学一级) | 2020-03-18 18:17
其他回答(1)
0

了解不了解c语言并不影响对题目的理解

jakio6 | 园豆:1318 (小虾三级) | 2020-03-18 14:46
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册