CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  PowerBuilder >  基础类

这种情况应该如何考虑??

楼主xiong1234(提问)2001-07-03 11:25:53 在 PowerBuilder / 基础类 提问

有这么一道题:  
      现有大、中、小三种鱼。大鱼每条5元,中鱼每条3元,小鱼每5条1元。要使100元正好卖100条鱼,编程求大、中、小鱼数。  
      当然我要解决的并不是什么卖鱼的问题,实际是要解决化学配料的问题,不过他们有相同之处,所以请各位帮忙,谢了。 问题点数:20、回复次数:23Top

1 楼xiong1234(提问)回复于 2001-07-03 11:26:56 得分 0

我要的只是思路,或是说算法。不一定是在PB中实现。Top

2 楼lqh178()回复于 2001-07-03 11:29:57 得分 1

在初等数论中有关于不定方程的解法,具体我记不清了.你可找本<初等数论>看一下.Top

3 楼assdeng(山野村夫)回复于 2001-07-03 11:31:10 得分 1

根本就无解嘛,除非鱼可以切开来卖。呵呵  
  Top

4 楼lqh178()回复于 2001-07-03 11:37:22 得分 0

如果无解在   不定方程的解法中可以求出.Top

5 楼Hanson_bati_zhu(欺世盗名之徒)回复于 2001-07-03 11:43:01 得分 0

有没有解不知道  
  反正穷举应该能够搞定  
  呵呵  
   
   
  啊,谁在骂我?!  
  Top

6 楼adhere(无)回复于 2001-07-03 11:44:09 得分 1

可以办到的啊  
  思路:  
          假设大鱼数量为X,中鱼为Y,小鱼为Z,所以有  
                    X+Y+Z=100     和  
                    5X+3Y+0.2Z=100  
  然后你可以在C语言中的嵌套循环    
      for(x=1;x<=100;x++)  
        {  
          for     (y=1;y<=100;y++)  
            {  
                for(z=1,z<=100,z++   )  
                {  
                  把方程式写成语句并用“printf()”把X\Y\Z显示出来就行了啊  
                  }  
            }  
      }  
  Top

7 楼xiong1234(提问)回复于 2001-07-03 11:48:24 得分 0

这种办法可真是要时间呀,不过谢了,总算有一点思路了Top

8 楼ping_ping(苹苹)回复于 2001-07-03 13:03:32 得分 0

:)我说着玩的,不一定对,呵呵。  
   
  根据已知条件列出方程式:  
  x,y,z代表大,中,小  
      5x+3y+0.2z   =   100  
      x   +   y+       z   =   100  
  作为三元一次方程组还缺少一个约束,  
  对计算机而言,简单假定x=0   ->   100/5   =   20,只要循环21次,即可求出所有解答。  
   
  Top

9 楼szjlq(如果问题继续存在,请与供应商联系)回复于 2001-07-03 13:13:23 得分 0

有两种结果:  
   
  大鱼  中鱼  小鱼  
  5    50   75  
  12    8   80Top

10 楼szjlq(如果问题继续存在,请与供应商联系)回复于 2001-07-03 13:13:57 得分 0

上面写错啦  
  大鱼  中鱼  小鱼  
  5    20   75  
  12    8   80   Top

11 楼zhuzhichao(竹之草)回复于 2001-07-03 13:23:35 得分 0

int   x,y,z;  
                  for   (x   =   0;x   <=   100   /   5;x++)  
                  {  
                          for   (y   =   0;y   <=   100   /   3;y++)  
                          {  
                                  for   (z   =   0;z   <=   100   /   0.2;z++)  
                                  {  
                                          if   ((5   *   x   +   3   *   y   +   0.2   *   z   ==   100)   &&   (x   +   y+     z   ==   100))  
                                                  System.out.println("\nx   =   \t"+x+"\ny   =   \t"+y+"\nz   =   \t"+z);  
                                  }  
                          }  
                  }Top

12 楼susu_0807(苏苏)回复于 2001-07-03 13:59:02 得分 1

首先声明:算法与开发工具没有关系!  
  然后是这个问题的解决办法:(计算机比较笨,编程解决的话,只能穷举法,下面是个例子)  
  int   a,b,c//a   大鱼     b   中鱼     c   小鱼  
  for   a   =   1   to   20  
          for   b   =   1   to   34  
                  for   c   =   1   to   100  
                          /*如果满足条件输出结果*/  
                  next  
          next  
  next  
   
   
  Top

13 楼ping_ping(苹苹)回复于 2001-07-03 14:10:52 得分 10

~~~唉  
  我的算法只要循环21次啊,怎么没人理会呢?  
  Top

14 楼zhuzhichao(竹之草)回复于 2001-07-03 14:17:48 得分 0

to   ping_ping(苹苹):  
  不對吧,外循環是21次,那內循環呢?  
  不用窮舉法怎麼做?Top

15 楼ping_ping(苹苹)回复于 2001-07-03 14:24:01 得分 0

:)  
   
  我还在试验呢  
   
  假定   x已知,则  
  y   =   (400   -   24x)   /   14  
  z   =   100   -   y   -   x  
  判断一下   y,z是否为整数以及是否满足基本条件就可以了啊?  
  Top

16 楼Dump(当铺)回复于 2001-07-03 14:31:32 得分 1

to   ping_ping   我支持你  
  对x进行循环即可  
      5x+3y+0.2z   =   100  
      x   +   y+     z   =   100  
   
  =>   y=(80-4.8x)/3.2  
   
  y为整数即为所求解.  
  Top

17 楼ping_ping(苹苹)回复于 2001-07-03 14:31:38 得分 0

:)  
  呵呵,成功了啊。  
  算法:  
   
  int   x,y,z  
  double   yy  
  //x,y,z代表大,中,小  
  //     25x+   15y+z   =   500  
  //     x     +     y   +z   =   100  
  //     分解后,  
  //     y   =   (400   -   24x)   /   14  
  //     z   =   100   -   y   -   x  
   
  for   x   =   0   to   20   step   1  
  yy   =   (400   -   24   *   x   )   /14  
  if   len(string(yy))   >   4   or   yy   <=0   then   continue  
  y   =   yy  
  z   =   int(100   -   y   -   x)  
  messagebox('OK','x='+string(x)   +   '~r'+string(y)   +   '~ry='+string(z)   +   '~rz='   &  
  +string(5*x+3*y+0.2*z)   +'~r'+string(x+y+z))  
  end   for  
   
  答案是:  
  5,20,75  
  12,8,80  
   
  Top

18 楼zhuzhichao(竹之草)回复于 2001-07-03 14:34:54 得分 1

哇,苹版主果然厲害,小生佩服的緊呀.  
   
  int   x,y,z;  
                  for   (x   =   0;x   <=   100   /   5;x++)  
                  {  
                          if   (((400   -   24   *   x)   %   14)   ==   0   &&   ((400   -   24   *   x)   /   14)   >=   0)  
                          {  
                                  y   =   (400   -   24   *   x)   /   14;  
                                  z   =   100   -   y   -   x;  
                                  System.out.println("\nx   =   \t"+x+"\ny   =   \t"+y+"\nz   =   \t"+z);  
                          }  
                  }  
   
  這樣就可以成功了,確實只要循環21次.   Top

19 楼ping_ping(苹苹)回复于 2001-07-03 14:34:58 得分 1

这个地方有漏洞,呵呵  
        if   len(string(yy))   >   4   or   yy   <   0   then   continue  
          y   =   yy  
          z   =   100   -   y   -   x  
          Top

20 楼ping_ping(苹苹)回复于 2001-07-03 14:43:02 得分 1

还有这个Messagebox,呵呵。。。  
  messagebox('OK','x='+string(x)   +   '~ry='+string(y)   +   '~rz='+string(z)   +   '~rMoney='   &  
                  +string(5*x+3*y+0.2*z)   +'~rx+y+z='+string(x+y+z))  
  Top

21 楼lqh178()回复于 2001-07-03 15:53:20 得分 1

如果需求变一下以上的解法都将难以实现.所以有时间还是去学习一下<初等数论>中关于不定方程式的解法为好.并且那种解法不但具有通用性,且运算次数几乎是最少的...Top

22 楼wangsw(呀呀)回复于 2001-07-03 16:52:28 得分 1

算法!真是无穷尽呀!  
  Top

23 楼xiong1234(提问)回复于 2001-07-04 10:40:18 得分 0

感谢大家对这个问题的关心,我感动得都要……了,哈。现在又是个问题,我该怎么给分呢?但我想大家不会分分计较的!再次感谢大家。Top

相关问题

  • 遇到这种情况应该如何调试?
  • 我这种情况的应该如何入手?
  • 请问这种情况下应该如何写查询语句?
  • 此种情况下应该如何与主线程同步?
  • 请教下,这种情况应该如何写SQL语句比较好
  • 这几种情况下:对象应该如何及时关闭呢?
  • 请问用websamba空间的兄弟:是否遇到 STATUS:> Error opening data socket 的情况,应该如何解决?
  • [急]用I2C通讯,多主机总线的情况应该如何写代码呀(在线等待!)
  • 想用c语言写一个具有最简单的编译功能的程序,应该如何入手,从哪些方面考虑呢?
  • 这个情况应该怎么建表

关键词

  • 小鱼
  • 大鱼
  • 解法
  • 鱼
  • yy
  • 中
  • 问题

得分解答快速导航

  • 帖主:xiong1234
  • lqh178
  • assdeng
  • adhere
  • susu_0807
  • ping_ping
  • Dump
  • zhuzhichao
  • ping_ping
  • ping_ping
  • lqh178
  • wangsw

相关链接

  • PowerBuilder类图书
  • PowerBuilder类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo