A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

©   /  2013-3-27 19:26  /  1695 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

用穷举法写的,你可以看下,其中几个容易出错的地方,都写上注意了
  1. public class Test{
  2.         public static void main(String[] args) {
  3.                 new PringtResult().getManNum();
  4.         }
  5. }

  6. class PringtResult {
  7.         double sum = 36.0;// 一共36块砖,因小孩搬得砖的数量是小数,此处用double类型
  8.         double temp = 0.0;// 临时变量,用于计算搬得砖的总块数,因小孩搬得砖的数量是小数,此处用double类型
  9.         int allman = 36;// 总人数
  10.         int boy = 0;// 小孩数
  11.         int man = 0;// 男人数
  12.         int woman = 0;// 女人数

  13.         /**
  14.          * 基本原理,一种可能一种可能的去试,计算机的运算速度很快的,
  15.          * 但是我现在还没学会怎样用java写函数来解三元一次方程(可以调用系统函数),
  16.          * 故这里用穷举法
  17.          */
  18.         public void getManNum() {
  19.                 for (int i = 0; i < allman; i++) {
  20.                         boy = i;// 让任意一种人的数量从零开始,这里选取小孩
  21.                         for (int j = 0; j < allman; j++) {
  22.                                 man = j;// 确定一种人之后,再让另一种人从零开始
  23.                                 woman = allman - man - boy;// 第三种人的数量就可以确定了,但是要注意人数不能为负
  24.                                 if (woman > 0) {
  25.                                         temp = boy * 0.5 + man * 4 + woman * 3;// 计算循环到现在这种情况下的人员搬得砖的数量
  26.                                         // 判断跟总砖数是否相同,注意:此时人数已经是36人了,只要再满足是36块砖就行了
  27.                                         if (temp == sum) {
  28.                                                 System.out.println("小孩的个数为:" + boy + "\n男人的个数为:" + man
  29.                                                                 + "\n女人的个数为" + woman);
  30.                                         }
  31.                                 }
  32.                         }
  33.                 }
  34.         }
  35. }
复制代码
希望能帮到你

评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1

查看全部评分

回复 使用道具 举报
刘策 发表于 2013-3-27 20:23
不好意思上个不对。我想这个应该对了吧。class Demo{
        public static void main(String[] args){
                for(int ...

过来看看大家有什么好方法没,不过哥们儿,您这不对啊,z/2跟咱们平常说的z除以2是不一样的~~
回复 使用道具 举报
牵强的笑掩饰内 发表于 2013-3-27 20:27
设男X人,搬砖4X;女Y人,搬砖3Y;孩子Z人,搬砖0.5Z;余下方程:
4X+3Y+0.5Z=36;
X+Y+Z=36;

亲,这种公式是不能化简的!这涉及到了实际数据,你化简之后7X+5Y=36,此时   哪来的z=30啊?
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马