百担百马+百钱百鸡+水仙花数--------“穷举”的三个练习题
1 //百马百担类似于百鸡百钱的问题,穷举 2 3 for(int dm =0;dm<=33;dm++) //大马的数量,第一层循环 4 5 { 6 for(int zm =0;zm<=50;zm++) //中马的数量,第二层循环 7 8 { 9 for(int xm = 0; xm<=200;xm++) //小马的数量,第三层循环 10 11 { 12 if(dm+zm+xm==100&&dm*3+zm*2+xm/2.0==100) 13 { 14 System.out.println("大马的数量是"+dm+"\t中马的数量是"+zm+"\t小马的数量是"+xm); 15 } 16 } 17 } 18 } 19 20 21 //百钱百鸡问题 22 23 for(int cock=0;cock<=20;cock++) //以公鸡为第一层循环 24 25 { 26 for(int hen =0;hen<=34;hen++) //以母鸡为第二层的循环 27 28 { 29 int chick = 100 - hen - cock; //计算雏鸡的数量 30 31 if((5*cock + 3*hen +chick/3.0)==100) //判断是不是符合百钱的要求 32 33 { 34 //输出满足要求的三种鸡的数量 35 System.out.println("公鸡的数量是"+cock+",母鸡的数量是"+hen+",雏鸡的数量是"+chick); 36 } 37 } 38 } 39 40 41 //水仙花数,穷举所有的三位数 42 43 for(int b = 1;b<=9;b++) //百位数的循环 44 45 { 46 for(int s = 0;s<=9;s++) //十位数的循环 47 48 { 49 for(int g = 0;g<=9;g++) //个位数的循环 50 51 { 52 if (b*b*b+s*s*s+g*g*g==b*100+s*10+g) //判断是不是满足条件 53 { 54 System.out.println(b*100+s*10+g); 55 56 } 57 } 58 }
三个穷举的练习题