作业帮 > 综合 > 作业

C++算法,1毛,2毛,5毛,1元,2元,5元问有多少中组合方式可以达到100元钱

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/10/05 04:00:55
C++算法,1毛,2毛,5毛,1元,2元,5元问有多少中组合方式可以达到100元钱
这是我编的算法,可以吗
#include
int main()
{
\x05using namespace std;
\x05double a = 0.1;
\x05double b = 0.2;
\x05double c = 0.5;
\x05int d = 1;
\x05int e = 2;
\x05int f = 5;
\x05int A,B,C,D,E,F;
\x05long N = 0;
\x05for (A = 0; A
可以,不过最好都用double型的对象.其实用void main就行,不要最后的return 0.因为这个算法目的是求出有几种可能并输出,所以最后是一个输出的操作,如果将这个函数定义成int的话反而麻烦了.
再问: 不是很懂void和int的区别。我刚运行下,计算机好像算不出来。而且我刚自己想了下,这样的话,计算机大概要循环 1000*500*200*100*50*20次,也就是1E13 。估计现在的个人电脑是没能力算出来的。
再答: 你把循环多的放里面,少的放外面,而且一角钱的可以不用循环,只需把前面所有的加起来,差多少到一百直接除就可以,所以一角钱的循环我认为可以舍去,因为只要求出几种方法就可以了,而不是分别列出来,没必要把需要多少一角钱求出来 从理论上来说运算次数没变,但是对电脑来说应该减轻了它的工作量,大循环的次数减少了。
再问: 哦。 你说的1角钱不用算是什么意思?不是很明白。
再答: 如果前面五种面值的恰好100元的话,就用不到一角,不够100,就一定能用n个一角补齐。比如说一张5块,一张2块,一张1块,一张5角,一张2角,剩下的一定能用913张一角补齐到100元,
再问: 恩,那问题是程序怎么表达这个意思呢?我想到的表达式是这个,求余 ==0 if ((100-(B*b+C*c+D*d+E*e+F*f) )%a == 0) 你有更好的吗
再答: 不用表达啊,不是只需要求出有几种方式吗?不用非要把每个组合是什么求出来啊。