正文

2005年第25期电脑报 编程点将台2005-06-30 11:14:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/xiangyu/2323.html

分享到:

在厦门就是郁闷,每周的电脑报都要到周三才可以拿到,我上次在北京的时候这周的电脑报上周六就可以拿到了啊。
昨天终于拿到报纸了,现在把里面的编程点将做出来,以享读者。
(呵呵,查了一下我的C语言程序百例,里面的第17题就是这一题,我稍微看的一下,好象我的程序比里面的简单啊 哈哈)

题目:甲、乙、丙三位渔夫出海打鱼,他们随船带了21只箩筐。当晚返航时,他们发现有七筐装满了鱼,还有七筐装满了半筐鱼,另外七筐则是空的,由于他们没有秤,只好采用目测的办法,他们认为七个满筐鱼的重量是相等的,七个半筐鱼的重量是相等的。在不将鱼倒出来的前提下,怎样将鱼和筐平分为三份?

解答:

/*编程思想:
用k1,k2分别表示第一等份的满筐筐数和半筐筐数,则其空筐筐数为:7-k1-k2;
用k3,k4分别表示第二等份的满筐筐数和半筐筐数,则其空筐筐数为:7-k3-k4;
那么第三等份的满筐筐数、半筐筐数和空筐筐数分别为:7-k1-k3,7-k2-k4,7-(7-k1-k2)-(7-k3-k4);
假设满筐时鱼为2,半筐时鱼为1,空筐时鱼为0(只是为了计算简单,数据可以成倍变化)
那么,总的鱼为21,每一份鱼为7。
所以,k1,k3<=3;循环使k1,k2,k3,k4取得所有可能的值,满足以下条件则输出:
2*k1+k2==7&&2*k3+k4==7&&(7-k1-k2)+(7-k3-k4)<7&&k3>=k1&&(7-k1-k3)>=k3
前面三个条件是控制每一份鱼和筐的数均为7,后面两个是使数据不重复输出。

使用JAVA编程,在winXP+j2sdk1.4.2_03下运行通过;
结果:第1组:第一份:满筐的筐数 1,半筐的筐数 5,空筐的筐数 1
            :第二份:满筐的筐数 3,半筐的筐数 1,空筐的筐数 3
            :第三份:满筐的筐数 3,半筐的筐数 1,空筐的筐数 3
      第2组:第一份:满筐的筐数 2,半筐的筐数 3,空筐的筐数 2
            :第二份:满筐的筐数 2,半筐的筐数 3,空筐的筐数 2
            :第三份:满筐的筐数 3,半筐的筐数 1,空筐的筐数 3
*/

public class TF25
{
  public static void main(String args[])
  {
    int k1,k2,k3,k4,count=0;
    for(k1=0;k1<=3;k1++)
      for(k2=0;k2<=7;k2++)
       for(k3=0;k3<=3;k3++)
        for(k4=0;k4<=7-k2;k4++)
           if(2*k1+k2==7&&2*k3+k4==7&&(7-k1-k2)+(7-k3-k4)<7&&k3>=k1&&(7-k1-k3)>=k3)
           {
             count++;
             System.out.println("第"+count+"组:"+"第一份:满筐的筐   数 "+k1+",半筐的筐数 "+k2+",空筐的筐数 "+(7-k1-k2));
             System.out.println("      :"+"第二份:满筐的筐数 "+k3+",半筐的筐数 "+k4+",空筐的筐数 "+(7-k3-k4));
             System.out.println("      :"+"第三份:满筐的筐数 " +(7-k1-k3)+ ",半筐的筐数 "+(7-k2-k4)+",空筐的筐数 "                         +(7-(7-k1-k2)-(7-k3-k4)));
             continue;
           }
   }
}
      

阅读(4716) | 评论(0)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

暂无评论
您需要登录后才能评论,请 登录 或者 注册