频道直达 - 专题 - 新闻 - 技巧 - 组网 - 开发 - 安全 - web编程 - 图像 - 操作系统 - 数据库 - 教育 - 旅游 - 健康 - 时尚 - 驱动 - 软件 - 游戏 - 多媒体 - ERP - 讨论组

一个有趣的问题的C语言编程

来源: 作者: 出处:巧巧读书 2006-09-07 进入讨论组

问题:有两个没有刻度的8两的酒瓶和一个可以没有刻度的3两的酒杯,现在有16两酒要平均分给4个人喝,怎么分配?

这个问题网上有很多人讨论过,我看过一篇文章写出了比较详细的C程序,但十分繁复。我对这个问题做了简单的思考写出了一个简单的程序,这个程序只能产生分配方法中的几种解法,但非常容易理解。

源程序如下:

#include"stdio.h"
int a,b,c,d,x,y,v,j;
void show()
{
 printf("甲 %d,乙 %d,丙 %d,丁 %d,瓶一 %d,瓶二 %d,酒杯 %d→第%d步。\n",a,b,c,d,x,y,v,j);
 j++;
}
void make()
{
 v=0;
 x=3;
 show();
 v=3;
 y=y-3;
 show();
 v=0;
 x=6;
 show();
 y=y-3;
 v=3;
 show();
 x=8;
 v=1;
 show();
}
void assign()
{
 x=x-3;
 v=v+3;
 show();
    a=a+3;
 v=v-3;
 show();
 x=x-3;
 v=v+3;
 show();
 d=x;
 x=0;
 show();
}
void main()
{
 int i;
 j=1;
 a=b=c=d=v=i=0;
 x=y=8;
 show();
 assign();
 while(x=0,x+y+v>8)
 {
  make();
  i=i+1;
  v=0;
  if(i=1)
  {
   a=4;
  }
  if(i=2)
  {
   b=1;
  }
  if(i=3)
  {
   c=1;
  }
  show();
     v=3;
  y=y+(x-3);
  x=0;
  show();
  if(x+y+v<=8)
   break;
 }
 b=b+v;
 v=0;
 show();
 y=y-3;
 v=v+3;
 show();
 c=c+v;
 v=0;
 show();
 d=d+y;
 y=0;
 show();
}

由于VC++6.0在编写源程序时十分方便,所以我即使写C程序也习惯使用VC++6.0,这个程序是在VC++6.0上运行通过。

这个简单的算法是循环产生1两酒,因为只要产生1两的情况,那些就十分容易分配了。

谁有更简单又能产生更多分配情况的好程序请贴出来,让大家分享一下!谢谢。

来自:http://www.qqread.com/cpp/c239514.html 更多文章 更多内容请看Java编程开发手册C/C++进阶技术文档专题,或进入讨论组讨论。
收藏此文】【 】【打印】【关闭
相关图文阅读
频道图文推荐
健 康 咨 询
时 尚 咨 询
巧巧读书宗旨
相关专题
最新论坛文章
站内各频道最新更新文档
站内最新制作专题
热门关键字导读
Photoshop教 程照片处理 照片制作 PS快捷键 抠图
计 算 机 故 障XP系统修复
艺 术 与 设 计设计 流媒体 设计欣赏 边框
计 算 机 安 全ARP
站内频道文章精选
巧巧电脑频道编辑信箱  告诉我们您想看的专题或文章