一条招聘程序题,请说出其中思想并填空。

来源:百度知道 编辑:UC知道 时间:2024/06/10 00:55:06
设计一个算法,对于任何指定钱数,计算其有1分,5分,10分,50分构成的组合数量。输入是指定的钱数,输出为组合的数量。
如,输入:10 因为有10*1,2*5,1*5+5*1,1*10等4各组合,所以输出:4
又如输入:10000 ,输出:67368701

程序:
#include <stdio.h>
int count(int x,int y,int z){
int num=1;
if(x>0)
num+=count(__(1)__,__(2)__,z);
if(y>0)
num+=count(__(3)__,y-1,__(4)__);
unm+=__(3)__;
return num;
}

int main(int argc,char *argv[]){
int x,y,z;
int money;
printf("输入:");
scanf("%d",&money);
x=money/50;
money%=50;
y=money/10;
money%=10;
z=money/5;
result=count(x,y,z);
printf("输出:%d\n",result);
retrun 0;
}

事想就是穷举所有情况
但看程序有问题
1 声明的函数调用函数本身,C++中是不允许的,而从程序格式上看应该是C++或者以前的版本
2 声明中条件选择语句,都只要一半,怎么选择?例如X,Y都小于0怎么办?
3 主程序中money的值计算时变化了,Y中代入的不是其原值
你自己把你举的例子代到程序中看看,第二个太大,你代第一个。程序没法远行,是不是你打错了啊!