- 9
- 0
- 约6.31千字
- 约 18页
- 2018-12-03 发布于广西
- 举报
空瓶分酒问题
课题名称
空瓶分酒问题
二.课题内容和要求
设计说明及要求:某人有12品脱啤酒一瓶(品脱是英容量单位,1品脱=0.568升),想从中准确地倒出6品脱啤酒。但是他没有6品脱的容器,只有一个8品脱和一个5品脱的容器。请问怎样利用这两个容器和这瓶啤酒,使8品脱的容器中恰好装好了6品脱啤酒?要求使用高级程序设计语言编程实现这一过程,给出所有可能的解法。
例如如下给出的是其中的一种解法:
12, 8, 5
12 ,0, 0
4, 8, 0
4, 3, 5
9 ,3, 0
9, 0, 3
1 ,8, 3
1 ,6, 5
6 ,6, 0。
三.需求分析
各函数的功能:
函数原型:int main()
功能:作为主调函数处理,调用函数f。
入口参数:无
返回值:整型
函数原型:freopen(1.txt, w, stdout);
功能:实现重定向,将标准输出流(默认为屏幕)文件定向到由1.txt指定的文件中,在本程序中就是将程序运行的结果保存在1.txt中。
入口参数:文件名为1.txt,”w”代表写入到文件,stdout 代表写入到文件,和第二个参数 w 连用。
返回值:返回值:成功,则返回一个path所指定文件的指针;失败,返回NULL。本程序中没使用它的返回值,这是惯常的做法。
函数原型:void f(int a, int b, int c, int t)
功能:用户自定义的函数,用于解决空瓶分酒问题。
入口参数:3个整型参数a,b,c,分别代表12品脱的啤酒,8品脱的容器,5品脱的容器。
返回值:void类型
四.概要设计
五. 详细设计
#include stdio.h
int cap[3] = {12, 8, 5}; // 容量
int beer[100][3] = {12}; // 每步装了多少啤酒
int cnt; // 解法计数
char v[13][9][6]; // 记录是否已访问
void f(int a, int b, int c, int t) // 把a倒入b中,t是步数
{
int i;
if (beer[t][a] beer[t][b] != cap[b]) //如果a不为空或b不满
{
if (beer[t][a] + beer[t][b] cap[b])
{
beer[t + 1][b] = cap[b];
beer[t + 1][a] = beer[t][a] + beer[t][b] - cap[b];
}
else
{
beer[t + 1][a] = 0;
beer[t + 1][b] = beer[t][a] + beer[t][b];
}
beer[t + 1][c] = beer[t][c];
if (v[beer[t + 1][0]][beer[t + 1][1]][beer[t + 1][2]]) // 判断//是否循环
{
return;
}
if (beer[t + 1][1] == 6) // 完成
{
printf(--------%d--------\n, ++cnt);
for (i = 0; i = t + 1; ++i)
{
printf(%d\t%d\t%d\n,beer[i][0],beer[i][1],beer[i][2]);
}
return;
}
v[beer[t + 1][0]][beer[t + 1][1]][beer[t + 1][2]] = 1;
f(a, c, b, t + 1);
f(c, a, b, t + 1);
f(b, c, a, t + 1);
f(c, b, a, t + 1);
v[beer[t + 1][0]][beer[t + 1][1]][beer[t + 1][2]] = 0;
}
}
int main()
{
// freopen(1.txt, w, stdout); // 重定向输出到文件
v[12][0][0] = 1;
f(0, 1, 2, 0);
f(0, 2, 1, 0);
return 0;
}
六.测试数据及结果分析
(1) 12 0 0
7 0 5
7 5 0
2 5 5
2 8 2
10 0 2
10 2 0
5 2 5
5 7 0
0 7 5
0 8 4
8 0 4
8 4 0
3 4 5
3 8 1
11 0 1
11 1 0
6 1 5
6 6 0
(2)12 0 0
7 0 5
7
您可能关注的文档
- 财务管理课程设计--财务报表-毕业(学术)论文设计.doc
- 财务软件功能设计的缺陷及对策-毕业(学术)论文设计.doc
- 财务舞弊与内部控制-毕业(学术)论文设计.doc
- 财政社会学视角下的中国贫富差距问题研究-毕业(学术)论文设计.doc
- 采后硅酸钠处理对厚皮甜瓜细胞膜相关物质含量及酶活性的影响-(精品)-毕业(学术)论文设计.doc
- 采后硅酸钠处理对厚皮甜瓜细胞膜相关物质含量及酶活性的影响-毕业(学术)论文设计.doc
- 参芎葡萄糖注射液生产线技术改造项目资金申请报告--毕业(学术)论文设计.doc
- 餐饮连锁经营的问题与对策研究城市最低生活保障制度下的福利依赖问题-毕业(学术)论文设计.doc
- 操作系统课程设计(论文)-基于静态优先权和响应比的进程管理系统的设计-毕业(学术)论文设计.doc
- 草128块水平井开采效果分析-毕业(学术)论文设计.doc
原创力文档

文档评论(0)