Java利用for循环解决经典算法题--“百钱买百鸡”(Ziph)

@Java

经典算法题–“百钱买百鸡”

大家好,我是Ziph!

题目:
三文钱可以买一只公鸡,两文钱可以买一只母鸡,一文钱可以买三只小鸡。问:用100文钱买100只鸡,公鸡、母鸡、小鸡的只数各有多少只?

题目中有三个未知数,用传统算法是不好计算的,但是计算机的运行机制很简单的可以计算出各种鸡的只数。

话不多说,直接上代码:

/**Author--Ziph
 * 百钱买百鸡--经典算法题
 * 鸡翁一,值钱三,鸡母一,值钱二,鸡雏三,值钱一,百钱买百鸡,问翁、母、雏各几何?
 * 下面的版本是没有考虑某只鸡为0的现象,如果想要有0只鸡运行结果也就是6种。
 * 实现0只鸡的做法只要把for循环中的i、j变量定义为0即可
 */

public class TestBuyChicken {
	public static void main(String[] args) {
		//嵌套的for循环就是三种鸡因满足某种条件而得到各种鸡的个数
		//i<=33和j<=50,100文钱除以两种鸡的单价得到的,也就是说鸡在不满足条件下的最大只数
		for (int i = 1; i <= 33; i++) {//i代表公鸡的数量
			for (int j = 1; j <= 50; j++) {//j代表母鸡的数量
				//(100 - i - j)就是小鸡,不用担心它会减成负数,因为鸡一共100只
				if ((100 - i - j) % 3 == 0 && 3 * i + 2 * j + (100 - i - j) / 3 == 100) {
					//(100 - i - j) % 3 == 0  小鸡三只一文钱,小鸡数一定要能被3整除,否则算出的结果有问题
					//3 * i + 2 * j + (100 - i - j) / 3 == 100  各种鸡单价乘鸡的只数要求等于100文钱
					//下面是对各个鸡种数量的打印
					System.out.println("公鸡" + i + "只,母鸡" + j + "只,小鸡" + (100 - i - j) + "只。");
				}
			}
		}
	}
}

执行结果:
在这里插入图片描述

OK,问题已解决。如还有问题请留言或回复!

拜拜

发布了8 篇原创文章 · 获赞 15 · 访问量 1829

猜你喜欢

转载自blog.csdn.net/weixin_44170221/article/details/104227461