穷举法例子
自动生成的方法存根
我国古代数学家张邱建在《算经》中出了一道“百钱买百鸡”的问题,题意是这样的:
5文钱可以买一只公鸡,3文钱可以买一只母鸡,1文钱可以买3只雏鸡。现在用100文钱买100只鸡,
那么各有公鸡、母鸡、雏鸡多少只?请编写程序实现 1publicclass Test_5 {
1 public class Test_5 { 2 public static void main(String[] args) { 3 for (int gj = 0; gj <= 20; gj++) {// 公鸡5文一只,百钱可最多买20只 4 for (int mj = 0; mj <= 33; mj++) {// 母鸡3文一只,百钱可最多买33只 5 for (int cj = 0; cj <= 100; cj++) {// 雏鸡1文三只,百钱可最多买300只 6 if (gj * 5 + mj * 3 + cj / 3 == 100 && gj + mj + cj == 100 && cj % 3 == 0) {// (买公鸡钱数+母鸡钱数+雏鸡钱数==100) 7 // &&(公鸡个数+母鸡个数+3倍的雏鸡个数==100) 和雏鸡是3 的倍数 8 System.out.println("公鸡" + gj + "母鸡" + mj + "雏鸡" + cj); 9 } 10 } 11 } 12 } 13 } 14 }
水仙花数
找出100——999种所有的水仙花数。
分析:水仙花数是指:一个三位数,其各位数字立方和等于该数本身。例如:370=33+73+00.这就说明370是一个水仙花数。
例如 153=1*1*1+5*5*5+3*3*3
所以要判断一个三位数是不是水仙花数,得先取得这个三位数的的个位,十位和百位。这里我由一下几种方法:
1 public class Test_6 { 2 public static void f() { 3 for (int i = 1; i < 10; i++) { 4 for (int j = 0; j < 10; j++) { 5 for (int k = 0; k < 10; k++) { 6 if (i * i * i + j * j * j + k * k * k == i * 100 + j * 10 + k) { 7 System.out.println(i * 100 + j * 10 + k); 8 } 9 } 10 } 11 } 12 } 13 14 public static void f2() { 15 int a = 0, b = 0, c = 0; 16 17 for (int j = 100; j < 1000; j++) { 18 a = j / 100; // 获得百位 19 b = j % 100 / 10; // 获得十位 20 c = j % 10; // 获得个位 21 if (j == a * a * a + b * b * b + c * c * c) 22 System.out.println(j); 23 } 24 } 25 26 public static void main(String[] args) { 27 f(); 28 f2(); 29 } 30 }
百马百担
有100匹马驮100担货,大马驮3担,中马驮2担,两匹小马驮一担,问有大,中,小各多少匹马?
解析:其实跟百钱买百鸡一样的
public class Test_7 { public static void print() { for (int d = 1; d <= 100; d++) { for (int z = 1; z <= 100; z++) { for (int x = 1; x <= 200; x++) { if (d * 3 + z * 2 + x / 2 == 100 && d + z + x == 100 && x % 2 == 0) { System.out.println("大马:" + d + " 中马:" + z + " 小马:" + x); } } } } } public static void main(String[] args) { print(); } }