农夫过河问题

我要代码啊,注意要有注释

商人过河问题,tc2.0下调试通过:
#include <stdio.h>
#include <conio.h>
#include <string.h>
void dwframe()
{
window(1,1,25,80);
textbackground(LIGHTBLUE);
textcolor(YELLOW);
clrscr();
gotoxy(2,2);
printf("┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓");
gotoxy(2,3);
printf("┃");
gotoxy(76,3);
printf("┃");
gotoxy(2,4);
printf("┃");
gotoxy(76,4);
printf("┃");
gotoxy(2,5);
printf("┃");
gotoxy(76,5);
printf("┃");
gotoxy(2,6);
printf("┃");
gotoxy(76,6);
printf("┃");
gotoxy(2,7);
printf("┃");
gotoxy(76,7);
printf("┃");
gotoxy(2,8);
printf("┃");
gotoxy(76,8);
printf("┃");
gotoxy(2,9);
printf("┃");
gotoxy(76,9);
printf("┃");
gotoxy(2,10);
printf("┃");
gotoxy(76,10);
printf("┃");
gotoxy(2,11);
printf("┃");
gotoxy(76,11);
printf("┃");
gotoxy(2,11);
printf("┃");
gotoxy(76,11);
printf("┃");
gotoxy(2,12);
printf("┃");
gotoxy(76,12);
printf("┃");
gotoxy(2,14);
printf("┃");
gotoxy(76,14);
printf("┃");
gotoxy(2,15);
printf("┃");
gotoxy(76,15);
printf("┃");
gotoxy(2,16);
printf("┃");
gotoxy(76,16);
printf("┃");
gotoxy(2,17);
printf("┃");
gotoxy(76,17);
printf("┃");
gotoxy(2,18);
printf("┃");
gotoxy(76,18);
printf("┃");
gotoxy(2,19);
printf("┃");
gotoxy(76,19);
printf("┃");
gotoxy(2,20);
printf("┃");
gotoxy(76,20);
printf("┃");
gotoxy(2,21);
printf("┃");
gotoxy(76,21);
printf("┃");
gotoxy(2,22);
printf("┃");
gotoxy(76,22);
printf("┃");
gotoxy(2,23);
printf("┃");
gotoxy(76,23);
printf("┃");
gotoxy(2,24);
printf("┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛");
}
void helpf()
{
dwframe();
gotoxy(25,4);
printf("^_^欢迎使用商人过河游戏!^_^");
gotoxy(4,6);
printf("游戏说明:");
gotoxy(5,7);
printf("三个商人带着三个随从和货物过河,船每次最多只能载两个人,");
gotoxy(5,8);
printf("要求在过河期间,任一岸上商人的人数要大于或等于随从的人数,");
gotoxy(5,9);
printf("否则随从会杀掉商人抢走货物。");
gotoxy(5,11);
printf("游戏操作:(1)依次输入过河的商人和随从人数;");
gotoxy(5,12);
printf(" (2)非法输入按键将重新开始。");
gotoxy(2,13);
printf("┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫");
}
char a[6];
char b[6];
void printcase(char a[],char b[])
{
int i,j,xa,xb,x0,ya,yb,y0;
xa=xb=x0=ya=yb=y0=0;
gotoxy(11,14);
printf("此岸 彼岸\n");
for(i=0;i<6;i++)
{
if(a[i]=='A')
xa++;
else if (a[i]=='B')
xb++;
else if(a[i]=='0')
x0++;
}
gotoxy(11,15);
for(i=1;i<=xa;i++)
printf("商人 ");
gotoxy(11,16);
for(i=1;i<=xb;i++)
printf("随从 ");
gotoxy(11,17);
for(i=1;i<=x0;i++)
printf(" ");

for(j=0;j<6;j++)
{
if(b[j]=='A')
ya++;
else if(b[j]=='B')
yb++;
else if(b[j]=='0')
y0++;
}
gotoxy(31,15);
for(j=1;j<=ya;j++)
printf("商人 ");
gotoxy(31,16);
for(j=1;j<=yb;j++)
printf("随从 ");
gotoxy(31,17);
for(j=1;j<=y0;j++)
printf(" ");
if(xa==0 && xb==0 && ya==3 && yb==3)
{
gotoxy(15,21);
printf("恭喜你!你已成功帮助商人安全过河!按任意键退出...");
getch();
window(1,1,25,80);
textbackground(BLACK);
textcolor(LIGHTGRAY);
clrscr();
exit(0);
}
}

void main()
{
int i,x,y,key,ca,cb,j,aA,aB,bA,bB;
char ch;
Start:
helpf();
gotoxy(15,16);
printf("请按任意键开始游戏(按Q键退出)...");
ch=getch();
if(ch=='Q'||ch=='q')
{
window(1,1,25,80);
textbackground(BLACK);
textcolor(LIGHTGRAY);
clrscr();
exit(0);
}
helpf();

for(i=0;i<3;i++)
a[i]='A';
for(i=3;i<6;i++)
a[i]='B';
for(i=0;i<6;i++)
b[i]='0';
printcase(a,b);
while(1)
{
gotoxy(20,18);
printf("输入去彼岸商人的人数: ");
scanf("%d",&x);
gotoxy(20,18);
printf("输入去彼岸随从的人数: ");
scanf("%d",&y);
for(ca=0,cb=0,i=0;i<6;i++)
{
if(a[i]=='A')
ca++;
else if(a[i]=='B')
cb++;
}
if(x<0 || x>ca || y<0 || y>cb || x+y<1 ||x+y>2)
{
gotoxy(15,21);
printf("输入有误!!按任意键重新开始...");
getch();
goto Start;
}
for(i=1;i<=x;i++)
{
for(j=0;j<6;j++)
if(a[j]=='A')
{
a[j]='0';
break;
}
}
for(i=1;i<=x;i++)
{
for(j=0;j<6;j++)
if(b[j]=='0')
{
b[j]='A';
break;
}
}
for(i=1;i<=y;i++)
{
for(j=0;j<6;j++)
if(a[j]=='B')
{
a[j]='0';
break;
}
}
for(i=1;i<=y;i++)
{
for(j=0;j<6;j++)
if(b[j]=='0')
{
b[j]='B';
break;
}
}
for(aA=0,aB=0,i=0;i<6;i++)
{
if(a[i]=='A')
aA++;
else if(a[i]=='B')
aB++;
}
for(bA=0,bB=0,i=0;i<6;i++)
{
if(b[i]=='A')
bA++;
else if(b[i]=='B')
bB++;
}

if((aA==3) ||(bA==3) || (aA==aB) || (bA==bB))
{
helpf();
printcase(a,b);
}
else
{
gotoxy(15,21);
printf("商人被杀,按任意键重新开始...");
getch();
goto Start;
}
gotoxy(20,18);
printf("输入回此岸商人的人数: ");
scanf("%d",&x);
gotoxy(20,18);
printf("输入回此岸随从的人数: ");
scanf("%d",&y);
for(ca=0,cb=0,i=0;i<6;i++)
{
if(b[i]=='A')
ca++;
else if(b[i]=='B')
cb++;
}
if(x<0 || x>ca || y<0 || y>cb || x+y<1 || x+y>2)
{
gotoxy(15,21);
printf("输入有误!!按任意键重新开始...");
getch();
goto Start;
}
for(i=1;i<=x;i++)
{
for(j=0;j<6;j++)
if(b[j]=='A')
{
b[j]='0';
break;
}
}
for(i=1;i<=x;i++)
{
for(j=0;j<6;j++)
if(a[j]=='0')
{
a[j]='A';
break;
}
}
for(i=1;i<=y;i++)
{
for(j=0;j<6;j++)
if(b[j]=='B')
{
b[j]='0';
break;
}
}
for(i=1;i<=y;i++)
{
for(j=0;j<6;j++)
if(a[j]=='0')
{
a[j]='B';
break;
}
}
for(aA=0,aB=0,i=0;i<6;i++)
{
if(a[i]=='A')
aA++;
else if(a[i]=='B')
aB++;
}
for(bA=0,bB=0,i=0;i<6;i++)
{
if(b[i]=='A')
bA++;
else if(b[i]=='B')
bB++;
}
if((aA==3) ||(bA==3) || (aA==aB) || (bA==bB))
{
helpf();
printcase(a,b);
}
else
{
gotoxy(15,21);
printf("商人被杀,按任意键重新开始...");
getch();
goto Start;
}
}
}
温馨提示:内容为网友见解,仅供参考
第1个回答  2008-10-21
这么狂
混球!!!

农夫过河问题正确答案是什么?
农夫过河问题 农夫需要把狼、羊、菜和自己运到河对岸去,只有农夫能够划船,而且船比较小,除农夫之外每次只能运一种东西,还有一个棘手问题,就是如果没有农夫看着,羊会偷吃菜,狼会吃羊。请考虑一种方法,让农夫能够安全地安排这些东西和他自己过河。答案:农夫带羊过河 农夫返回 农夫带狼过河 农夫...

农夫的故事告诉我们什么道理?
农夫过河问题告诉我们处理问题应从实际出发,不能生搬硬套。灵活思考、审时度势、取舍得当、不要一根筋。农夫过河的哲理是:做事遇到困难时要多思考、灵活多便。做事要灵活,遇到困难要多问几个为什么,不要照书宣科。

农夫过河问题是怎么解决的?
1. 农夫首先带羊过河,然后返回空手到对岸,将羊留在对岸。2. 农夫回到起始岸,携带白菜过河,将白菜留在对岸,然后再次返回起始岸,带羊回到起始岸。3. 农夫带着狼过河,将狼留在对岸,同时将白菜带回起始岸。4. 最后,农夫再次过河,只带羊过河,完成任务。这个著名的数学智力题目,原题描述的是一...

农夫过河问题
方案:农夫先把羊运过河,第二次再把菜运过河,此时又把羊捎回,第三次放下羊,同时把豺狗 运过河,第四次把羊运过河.

农夫过河要做几次?
按照以下步骤过河,一个也不会少。第一次:把羊带过河,把羊放在对岸回来。第二次:把草带过河,把草放在对岸同时把羊带回去。第三次:回去后把狼放在船上把羊放下,过河后,放下狼。第四次:农夫回到对岸,带上羊过河。(完成)此类问题是过河问题,一般都设定一个过河的情景,然后规定若干过河...

农夫过河的问题
1.羊去空回→狼去羊回→菜去空回→羊去不回 2.羊去空回→菜去羊回→狼去空回→羊去不回 就这两种

农夫过河问题
首先 A狼和白菜---B农夫和羊 农夫回去 A农夫、狼和白菜---B羊 农夫载白菜过河 A狼---B农夫、羊和白菜 农夫再和羊一起渡回去 A农夫、狼和羊---B白菜 农夫带狼过河 A羊---

农夫过河问题(c\/c++),要求动态实现! 哪位大神帮帮忙啊
printf("农夫带菜过河\\n");}else if(p[2]==p[0]){p[2]=1;printf("农夫带羊过河\\n");}else if(p[1]==p[0]){p[1]=1;printf("农夫带狼过河\\n");}}}p[0]=(p[0]+1) % 2;gh(p);}int main(){int p[4]; \/\/p[0]:农夫;p[1]:狼;p[2]:羊;p[3]白菜.int...

求设计实现农夫过河问题(农夫带着一只狼,一只养,一棵白菜,一次只能带一...
这么多

经典过河问题有哪些?
2、一个农夫过河带着一条狼、一只羊和一棵白菜,身处河的南岸。现在他要把这些西全部运到北岸,现在问题是他面前只有一条小船,船小到只能容下他和一件物品,另外只有农夫能撑船。当农夫在场的时候,这三样东西相安无事.一旦农夫不在,狼会吃羊,羊会吃白菜。农夫怎样才能安全地将这三样东西带过河。

相似回答