用穷举法写的,你可以看下,其中几个容易出错的地方,都写上注意了- public class Test{
- public static void main(String[] args) {
- new PringtResult().getManNum();
- }
- }
- class PringtResult {
- double sum = 36.0;// 一共36块砖,因小孩搬得砖的数量是小数,此处用double类型
- double temp = 0.0;// 临时变量,用于计算搬得砖的总块数,因小孩搬得砖的数量是小数,此处用double类型
- int allman = 36;// 总人数
- int boy = 0;// 小孩数
- int man = 0;// 男人数
- int woman = 0;// 女人数
- /**
- * 基本原理,一种可能一种可能的去试,计算机的运算速度很快的,
- * 但是我现在还没学会怎样用java写函数来解三元一次方程(可以调用系统函数),
- * 故这里用穷举法
- */
- public void getManNum() {
- for (int i = 0; i < allman; i++) {
- boy = i;// 让任意一种人的数量从零开始,这里选取小孩
- for (int j = 0; j < allman; j++) {
- man = j;// 确定一种人之后,再让另一种人从零开始
- woman = allman - man - boy;// 第三种人的数量就可以确定了,但是要注意人数不能为负
- if (woman > 0) {
- temp = boy * 0.5 + man * 4 + woman * 3;// 计算循环到现在这种情况下的人员搬得砖的数量
- // 判断跟总砖数是否相同,注意:此时人数已经是36人了,只要再满足是36块砖就行了
- if (temp == sum) {
- System.out.println("小孩的个数为:" + boy + "\n男人的个数为:" + man
- + "\n女人的个数为" + woman);
- }
- }
- }
- }
- }
- }
复制代码 希望能帮到你 |