-
大小: 4KB文件類型: .c金幣: 1下載: 0 次發(fā)布日期: 2021-06-04
- 語言: C/C++
- 標(biāo)簽: 農(nóng)夫過河??
資源簡(jiǎn)介
數(shù)據(jù)結(jié)構(gòu),農(nóng)夫過河。詳細(xì)講述過河
#include
//0代表在河的這邊;1代表在河的對(duì)岸
struct Condition{
int farmer;
int wolf;
int sheep;
int cabbage;
};
struct Condition conditions[100];//結(jié)構(gòu)體條件數(shù)組
char * action [100];
void takeWolfOver(int i)
//把狼來過去
{
action[i]="把狼過去.---->對(duì)岸";
conditions[i+1].wolf=1;
conditions[i+1].sheep=conditions[i].sheep;
conditions[i+1].cabbage=conditions[i].cabbage;
}
void takeWolfBack(int i)/*把狼帶回來*/
{
action[i]="帶狼回來.本岸對(duì)岸";
conditions[i+1].wolf=conditions[i].wolf;
conditions[i+1].sheep=1;
conditions[i+1].cabbage=conditions[i].cabbage;
}
void takeSheepBack(int i)/*把羊帶回來*/
{
action[i]="帶羊回來.本岸對(duì)岸";
conditions[i+1].wolf=conditions[i].wolf;
conditions[i+1].sheep=conditions[i].sheep;
conditions[i+1].cabbage=1;
}
void takeCabbageBack(int i)/*把菜帶回來*/
{
action[i]="帶菜回來.本岸對(duì)岸";
conditions[i+1].wolf=conditions[i].wolf;
conditions[i+1].sheep=conditions[i].sheep;
conditions[i+1].cabbage=conditions[i].cabbage;/*全不動(dòng)*/
}
void getBackBarely(int i)/*返回時(shí)的情況*/
{
action[i]="空手回來.本岸<---(barely)";
conditions[i+1].wolf=conditions[i].wolf;
conditions[i+1].sheep=conditions[i].sheep;
conditions[i+1].cabbage=conditions[i].cabbage;
}
void showSolution(int i)/*顯示解決方法*/
{
int c;
printf("\n");
printf("%s\n","解決辦法:");
for(c=0;c<i;c++)
{
printf("step%d:%s\n",c+1,action[c
代碼片段和文件信息
#include
//0代表在河的這邊;1代表在河的對(duì)岸
struct?Condition{
?int?farmer;
?int?wolf;
?int?sheep;
?int?cabbage;
};
struct?Condition?conditions[100];//結(jié)構(gòu)體條件數(shù)組
char?*?action?[100];
void?takeWolfOver(int?i)
//把狼來過去
{
????action[i]=“把狼過去.---->對(duì)岸“;
????conditions[i+1].wolf=1;
????conditions[i+1].sheep=conditions[i].sheep;
????conditions[i+1].cabbage=conditions[i].cabbage;
}
void?takeWolfBack(int?i)/*把狼帶回來*/
{
????action[i]=“帶狼回來.本岸<---(wolf)“;
????conditions[i+1].wolf=0;
????conditions[i+1].sheep=conditions[i].sheep;
????conditions[i+1].cabbage=conditions[i].cabbage;
????}
void?takeSheepOver(int?i)/*把羊帶過去*/
{
????action[i]=“帶羊過去.(sheep)--->對(duì)岸“;
????conditions[i+1].wolf=conditions[i].wolf;
????conditions[i+1].sheep=1;
????conditions[i+1].cabbage=conditions[i].cabbage;
}
void?takeSheepBack(int?i)/*把羊帶回來*/
{
????action[i]=“帶羊回來.本岸<---(sheep)“;
????conditions[i+1].wolf=conditions[i].wolf;
????conditions[i+1].sheep=0;
????conditions[i+1].cabbage=conditions[i].cabbage;
}
void?takeCabbageOver(int?i)/*把菜帶過去*/
{
????action[i]=“帶菜過去.(cabbage)--->對(duì)岸“;
????conditions[i+1].wolf=conditions[i].wolf;
????conditions[i+1].sheep=conditions[i].sheep;
????conditions[i+1].cabbage=1;
}
void?takeCabbageBack(int?i)/*把菜帶回來*/
{
????action[i]=“帶菜回來.本岸<---(cabbage)“;
????conditions[i+1].wolf=conditions[i].wolf;
????conditions[i+1].sheep=conditions[i].sheep;
????conditions[i+1].cabbage=0;
}
void?getOverBarely(int?i)/*過河時(shí)的情況*/
{
????action[i]=“空手過去.(barely)--->對(duì)岸“;
????conditions[i+1].wolf=conditions[i].wolf;
????conditions[i+1].sheep=conditions[i].sheep;
????conditions[i+1].cabbage=conditions[i].cabbage;/*全不動(dòng)*/
}
void?getBackBarely(int?i)/*返回時(shí)的情況*/
{
????action[i]=“空手回來.本岸<---(barely)“;
????conditions[i+1].wolf=conditions[i].wolf;
????conditions[i+1].sheep=conditions[i].sheep;
????conditions[i+1].cabbage=conditions[i].cabbage;
}
void?showSolution(int?i)/*顯示解決方法*/
{
????int?c;
????printf(“\n“);
????printf(“%s\n““解決辦法:“);
????for(c=0;c????{
????????printf(“step%d
評(píng)論
共有 條評(píng)論