❶ 怎么用java编写一个程序,计算出百钱买百鸡一共有几种方案
/*条件:
*公鸡一只5钱,
*母鸡一只3钱,
*小鸡1钱3只
*/
publicclassTest2
{
publicstaticvoidmain(Stringargs[])
{
intx,y,z;//x代表公鸡的数目,y代表母鸡的数目,z代表小鸡的数目
for(x=1;x<20;x++){//因为只有100钱,最多只能买20只公鸡,但是全买公鸡就达不到100只
for(y=1;y<33;y++){//因为只有100钱,最多只能买33只公鸡,但是全买母鸡就达不到100只
if(x*5+y*3<=100){//x*5+y*3等于买公鸡和母鸡所发费的钱不能超过100钱
z=3*(100-(x*5+y*3));//除掉买公鸡、母鸡的钱剩下来的就是买小鸡的钱,
//买小鸡的数目等于买小鸡的钱乘以3
if(x+y+z==100){//所有的鸡的数目加起来必须等于100只
System.out.print("公鸡、母鸡、小鸡数目分别是:"+x);
System.out.print(""+y);
System.out.println(""+z);
}
}
}
}
}
}
//我已经运行出来了,还附上了运行出来结果截图,并进行注释,请给我加分啊!
❷ 百钱百鸡(穷举算法)
设公鸡、母鸡、小鸡分别为x、y、z 只,由题意得:
x+y+z =100……①
5x+3y+(1/3)z =100……②
有两个方程,三个未知量,称为不定方程组,有多种解。
令②×3-①得:7x+4y=100;
即:y =(100-7x)/4=25-(7/4)x
由于y 表示母鸡的只数,它一定是自然数,而4 与7 互质,因此x 必须是4 的倍数。我们把它写成:x=4k(k 是自然数),于是y=25-7k,代入原方程组,可得:z=75+3k。把它们写在一起有:
x =4k
y =25 - 7k
z =75+ 3k
一般情况下,当k 取不同数值时,可得到x、y、z 的许多组值。但针对本题的具体问题,由于x、y、z 都是100 以内的自然数,故k 只能取1、2、3 三个值,这样方程组只有以下三组解:
一、 x =4;y =18;z =78
二、 x =8;y =11;z =81
三、 x =12;y =4;z =84