当前位置: 代码迷 >> C语言 >> 百钱买百鸡问题,怎么也想不通,求助啊!!!!
  详细解决方案

百钱买百鸡问题,怎么也想不通,求助啊!!!!

热度:117   发布时间:2008-01-11 23:37:15.0
百钱买百鸡问题,怎么也想不通,求助啊!!!!
100元买:小鸡0.5元/只;母鸡2元/只;公鸡3元/只  几种方案?
我的思路:x+y+z==100&&0.5*x+2*y+3*z==100
我输得程序:
#include <stdio.h>
main()
{int x,y,z;
   for(x=100,x>=0,x--)
     {
     for(y=100,y>=0,y--)
       {     
       for(z=100,(x+y+z==100)&&(0.5*x+2*y+3*z==100),z--)
       printf("x=%d  y=%d  z=%d",x,y,z)
       }
     }
}

各位老师我错在哪儿了,怎么无数出???
搜索更多相关的解决方案: int  main  include  公鸡  

----------------解决方案--------------------------------------------------------
终于研究出来了
#include <stdio.h>
main()
{int x,y,z;
   for(x=100,x>=0,x--)
     {
     for(y=100,y>=0,y--)
       {  
         for(z=100;z>=0,z--)   
          {
           if(x+y+z==100)&&(0.5*x+2*y+3*z==100),z--)
           printf("x=%d  y=%d  z=%d",x,y,z);
           continue;
          }
        }
     }
}
----------------解决方案--------------------------------------------------------
恭喜
----------------解决方案--------------------------------------------------------
建议改为
建议改为
#include <stdio.h>
main()
{int x,y,z;
   for(x=100;x>=0;x--)
     {
     for(y=100;y>=0;y--)
       {  
         for(z=100;z>=0;z--)   
          {
           if((x+y+z==100)&&(0.5*x+2*y+3*z==100))
           {z--;
           printf("x=%d  y=%d  z=%d\n",x,y,z);
           }
           continue;
          }
        }
     }
}
----------------解决方案--------------------------------------------------------
楼上的不错啊,其实还要考虑效率问题,做计算要是大量得计算效率很重要,优化算法也很关键啊
----------------解决方案--------------------------------------------------------
我也修改了一下程序,减少了循环次数,减少了一层循环,大家指点一下.
#include <stdio.h>
main()
{int x,y,z; /* x为公鸡数目,y为母鸡数目,z为小鸡数目 */
   for(x=33;x>=0;x--)
   {
     for(y=50;y>=0;y--)
     {  
         z=100-x-y;
         if(z>=0)
           if(3*x+2*y+0.5*z==100.0)
             printf("x=%d  y=%d  z=%d\n",x,y,z);
     }
   }
}

[[italic] 本帖最后由 苦中求乐 于 2008-1-12 12:45 编辑 [/italic]]
----------------解决方案--------------------------------------------------------
不错啊,帮你顶一下啊,呵呵,时间缩短了.
----------------解决方案--------------------------------------------------------
第九行的 if(z>=0)也可以不要呀!x=33
   y=50已是最大了,100-X-Y不可能比0小了
----------------解决方案--------------------------------------------------------
FOR语句里不用分号也能通过编译,你用的什么工具编程呀
----------------解决方案--------------------------------------------------------
#include<stdio.h>
void main()
{
    int i,j,k;
    for(i=0;i<34;i++)
      for(j=0;j<=50;j++)
        for(k=0;k<=200;k++)
        if(i*3+j*2+k*0.5==100)
         printf("%d %d %d\n",i,j,k);
}
这个可以吗??感觉用了三层循环多了。。但是好理解。好写;
----------------解决方案--------------------------------------------------------
  相关解决方案