`
yiminghe
  • 浏览: 1431442 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

找零问题

阅读更多

问题描述:

 

有n美元需找零.

    美元中有x美分,y美分,z美分,a美分,s美分

总共有多少种方式?


分成两步:
    1.计算使用x美分找零的方法数.
    2.上面数目加上除了使用x美分找零的方法数以外的数目.

 

演示@google code

 

代码:

 

想模仿 scheme 很棘手

 

/*
            
            递归解法,金币找零问题,模仿 scheme
            
		a:[{
			value : value ,//当前零钱金额
			index: index  //当前标签
		}]
	*/
function countchange(a, limitW) {
	var option=[];
	var result=[];
	
	function selectcount(i,value) {
		option[i]=value;
		return i;
	}
	
	function unselectcount(i) {
		option[i]--;
	}
	
	function count_iter(i,remain) {
		if(remain == 0) {
			var tmp=[];
			for(var j=0;j<option.length;j++){
				if(option[j]) {
					tmp.push("金额 "+ a[j].value+ " : "+option[j]+" 个 , ");
				}
			}
			result.push(tmp);
			return i;
		}
		if(remain>=a[i].value) {
			//选择 a[i],计算,然后复原
			unselectcount(
						count_iter(
								selectcount(i,(option[i]||0)+1),remain-a[i].value
											)
										);
		}
		//不选 a[i]
		if(i<a.length-1)
			count_iter(i+1,remain);
		return i;	
	}
	
	count_iter(0,limitW);
	return result;								
}
 
1
0
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics