欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

for循环解决实际问题

程序员文章站 2022-07-12 17:12:33
...

问题1

大马驮2石粮食,中马驮1石粮食,两头小马驮一石粮食,要用100匹马,驮100石粮食,该如何调配?

算法
假设需要大马a匹,中马b匹,小马c匹

a+b+c=100 2a+b+c/2=100
0<=a<=50 0<=b<=100 0<=c<=100(不能大于100,总量是100);

如果只用大马最多需要50匹
如果只用中马最多需要100匹
如果只用小马最多需要100匹

var cout = 0;
			for (var a = 1; a <= 50; a++) {
				for (var b = 1; b <= 100; b++) {
					var c = 100 - a - b;
					if ((a + b + c == 100) && (2 * a + b + c / 2 == 100)) {
						document.write("大马:" + a + "中马:" + b + "小马" + c + "<hr />");
						cout++;
					}	
				}
			}

声明一个变量cout用来记录一共可以有多少种方法
当满足条件时,cout每次会自增1

问题2

小明单位发了100元的购物卡,小明到超市买三类洗化用品,洗发水(15元),香皂(2元),牙刷(5元)。要把100元整好花掉,可如有哪些购买结合?
算法
假设洗发水a瓶 ,香皂b个,牙刷c个

如果只买洗发水,则最多可以买6瓶
如果只买香皂,则最多可以买50个
如果只买牙刷,则最多可以买20个

for(var a=1; a<=6; a++){
				for(var b=1; b<=50; b++){
					for(var c=1; c<=20; c++){
						if(15*a+2*b+5*c==100){
							document.write("洗发水:" + a + "&nbsp;" + "香皂:" + b + "&nbsp;" + "牙刷:" + c + "<hr />");
						}
					}
				}
			}

问题3

打印出所有的 "水仙花数 ",所谓 "水仙花数 "是指一个三位数,其各位数字立方和等于该数本身。
153就是一个水仙花数
算法
要想判断是不是水仙花数,首先就要获取个位、十位、百位上的数

153=1 * 1 * 1 + 5 * 5 * 5 + 3 * 3 * 3

for(var i=100; i<1000; i++){
				var a=parseInt(i%10);		//个
				var b=parseInt((i/10)%10);	//十
				var c=parseInt(i/100); 		//百
				if(a*a*a+b*b*b+c*c*c==i){
					document.write("水仙花数:" + i + "<hr />");
				}
			}

问题四

公园里有一只猴子和一堆桃子,猴子每天吃掉桃子总数的一半,把剩下一半中扔掉一个坏的。到第七天的时候,猴子睁开眼发现只剩下一个桃子。问公园里刚开始有多少个桃子?
算法
反推法:
[由最后一天往前一直推导]
最后一天剩下一个桃子

假设公园刚开始有 x 个桃子 第七天只剩1个桃子
第六天有(1+1)*2 = 4
以此类推

var peach = 1;
			for(var i=1; i<=6; i++){
				peach = (peach+1)*2;
			}
			document.write("公园里一共有" + peach + "个桃子");

答案:一共有190个桃子