老师布置的分酒问题,求C语言或MATLAB程序,跪求大佬解答

老师布置的分酒问题,求C语言或MATLAB程序,跪求大佬解答,第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-=yb=y }

else if(c==z)

{ a+=zc=0 }

else if(b>z-c)

{

b-=(z-c)c=z

}

else {  c+=bb=0  }

printf("%4d%4d%4d\n",a,b,c)

}

}

5-->83 0 5

3-->指余亩50 3 5

8-->33 3 2

3-->毁大51 5 2

5-->81 0 7

3-->50 1 7

8-->唯森33 1 4

5-->34 0 4

...是我以前回答的

#include <iostream>

using namespace std

//三个瓶子以0,1,2标识

int V[3]={12,8,5}//三个瓶子的容积

//可能的倒酒方式有姿氏6种,从src[i]到dest[i]

int src[6] ={0,0,1,1,2,2}

int dest[6]={1,2,0,2,0,1}

int record[100][3]//record[i][0~2]记录三个瓶子盛酒的状态

int rec_index=0//已知的状态数

//从a瓶倒酒到b瓶

void Pour(int state[],int a,int b)

{

int r=V[b]-state[b]

if(state[a]<r) {state[b]+=state[a]state[a]=0}

else {state[b]=V[b]state[a]-=r}

}

//输出倒酒的全部步骤

void Output()

{

printf("ABC\n")

for(int i=0i<rec_index++i)

printf("%4d %4d %4d\n",record[i][0],record[i][1],record[i][2])

printf("\n\n")

}

//记录倒酒的步骤

void Record(int state[])

{

record[rec_index][0]=state[0]

record[rec_index][1]=state[1]

record[rec_index][2]=state[2]

++rec_index

}

//状态是否出现过

bool Exist(int state[])

{

for(int i=0i<rec_index++i)

if (state[0]==record[i][0]

&&state[1]==record[i][1]

&&state[2]==record[i][2])

return true

return false

}

//郑乱根据当前状态求解下一状态

void Solve(int state[])

{

int a=state[0],b=state[1],c=state[2]

Record(state)

if(a==6 &&b==6 &&c==0) {Output()return} //到达目标,输出

for(int i=0i<6++i) //尝试所有可能的 *** 作

{

if(state[src[i]]==0) continue

Pour(state,src[i],dest[i])

if(!Exist(state)) //判断重复状态避免进入死循环

{

Solve(state)

--rec_index

}

state[0]=astate[1]=bstate[2]=c//恢复当迹丛散前状态

}

}

int main()

{

int init[3]={12,0,0}//初始状态

Solve(init)

return 0

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/8236363.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-14
下一篇 2023-04-14

发表评论

登录后才能评论

评论列表(0条)

保存