日常编程思考轨迹(入门)--零钱兑换

题目描述 

n元人民币换成1元、2元、5元的零钱,请计算共有多少种兑换方法?

输入描述:

输入一行,包含一个整数n
1 <= n <= 200

---------------------------------------------------------------------------------------------
可以这样想,这就是在问将1、2、5三种人民币组合相加变成n元的各种情况?如果没有5元可以当成5元的个数为0,
没有2元可以当成2元的个数为0,以此类推。
这样的话,就可以用一个三层for循环来构造解题方式。
假设输入的值为n,那么case记录各种情况的数量
for(int i=0;i<n/5;i++){//5元人民币的数量的可能值
    for(iint j=0;j<(n-5*i)/2;j++){//2元人民币数量的可能值
        for(int k=0;k<n-5*i-2*j;i++j){
            case++;
        }
    }
}
因为输入描述中说明了人民币是从1开始的整数,所以不用考虑n为0的情况
---------------------------------------------------------------------------------------------
在实际编写代码的时候注意到:
1、这个在基本思路上是没有错的,但是没有考虑到i==n/5时的情况,后两个循环判断的条件也欠缺这个边界考虑,会导致最终答案有一些出入
2、改正上面的错误编写第三个循环体的时候突然发现,其实2元和5元的数量确定之后,1元的数值其实也就确定了,因此,第三个循环其实就是画蛇添足,因此要去掉
3、可是在准备输出的时候发现编译器总是不能给出正确的想要的提示,于是仔细审视了几遍代码,经过观察,发现case的颜色与一般的变量的颜色不一样,这是才想到
    case其实是switch语句里面的关键字,于是换了一个可用的标识符
4、自测的时候出现了一个因为手误导致for循环体中第二个条件与第三个条件之间没有加分号的情况,编译只是提示了所在行有一个错误,
只把错误定位在了应该真正改正的地方的附近,但幸好还是发现了
完成上述步骤之后
自测和提交便一次性通过了(虽然难度系数不高,但是一开始真的是把他想复杂了,并没有真正理解题目的意图,还是应该多积累才是)
全部评论

相关推荐

1 收藏 评论
分享
牛客网
牛客企业服务