老师布置的分酒问题,求C语言或MATLAB程序,跪求大佬解答
分酒问题是一个十分著名的智力问题。该问题是:有一只装满8斤酒的瓶子和两只分别装5斤和3斤酒的空瓶,如何才能将这8斤酒分成两等份。这个问题规模小,手工就可以完成。当你学习了...
分酒问题是一个十分著名的智力问题。该问题是:有一只装满8斤酒的瓶子和两只分别装5斤和3斤酒的空瓶,如何才能将这8斤酒分成两等份。这个问题规模小,手工就可以完成。当你学习了这个问题后,是否考虑过更大规模和一般性问题呢?如果规模扩大,手工无法完成,如何设计算法和建立模型求解呢?对一个一般性的问题又该如何建立模型和设计算法进行求解呢?请你完成下面问题:
1. 现有一只装满12斤酒的瓶子和三只分别装10斤、6斤和3斤酒的空瓶,如何才能将这12斤酒分成三等份。如果进行四等份呢,结果如何?如果4个瓶子分别要求装5斤、3斤、2斤、2斤,又能否实现?试建立数学模型并设计算法,求最少经过多少步操作完成,且有多少种方式可采用最少步数完成。要求对实现方式给出详细操作步骤。
2.一般问题:设有个瓶子,每个瓶子最多装酒数量用向量表示为(x1,x2,x3...xn)。现在初始各瓶子装酒为(X10,X20,X30...Xn0)。现要实现将各瓶子装酒为(d1,d2,d3,...dn)。要求不凭借任何其它工具,问能否实现?若能实现,给出实现的方法,并给出充分理由说明是否是最少步数。并对你所使用的模型和算法进行分析说明。
3.你能否自己设计一个实例,要求最少完成步数不少于13步。给出从初始状态到目标状态的详细实现步骤。 展开
1. 现有一只装满12斤酒的瓶子和三只分别装10斤、6斤和3斤酒的空瓶,如何才能将这12斤酒分成三等份。如果进行四等份呢,结果如何?如果4个瓶子分别要求装5斤、3斤、2斤、2斤,又能否实现?试建立数学模型并设计算法,求最少经过多少步操作完成,且有多少种方式可采用最少步数完成。要求对实现方式给出详细操作步骤。
2.一般问题:设有个瓶子,每个瓶子最多装酒数量用向量表示为(x1,x2,x3...xn)。现在初始各瓶子装酒为(X10,X20,X30...Xn0)。现要实现将各瓶子装酒为(d1,d2,d3,...dn)。要求不凭借任何其它工具,问能否实现?若能实现,给出实现的方法,并给出充分理由说明是否是最少步数。并对你所使用的模型和算法进行分析说明。
3.你能否自己设计一个实例,要求最少完成步数不少于13步。给出从初始状态到目标状态的详细实现步骤。 展开
1个回答
展开全部
#include<stdio.h>
int i;
void getti(int a,int y,int z);
int main()
{
int a,y,z;
printf("input full a, empty b,c,get i:");
scanf("%d%d%d%d",&a,&y,&z,&i);
getti(a,y,z);
getti(a,y,z);
return 0;
}
void getti(int a,int y,int z)
{
int b=0,c=0;
printf("a%d b%d c%d\n%4d%4d%4d\n",a,y,z,a,b,c);
while(a!=i||(b!=i&&c!=i)) {
if(!b)
{ a-=y;b=y; }
else if(c==z)
{ a+=z;c=0; }
else if(b>z-c)
{
b-=(z-c);c=z;
}
else { c+=b;b=0; }
printf("%4d%4d%4d\n",a,b,c);
}
}
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询