人、犬、うさぎ、キャベツがいて、すべてを河を渡らせる問題です。
ルールとしては
犬は人がいないとウサギを食べ、うさぎはキャベツを食べてしまいます。
この問題を総当たりで解くというが問題です。今の考えとしては下のプログラムです
#include<stdio.h>
void init(int b[4][2]); //2次元配列の初期化
void move(int b[4][2]); //総当たりの移動
void printstate(int b[4][2]); //状態を表示
main(){ //b 人 1 0 2次元配列 で1が いる側 いない川をつくる
int b[4][2]; // 犬 1 0
init(b); // うさぎ 1 0
move(b); // キャベツ 1 0
}
void init(int b[4][2]){
int i=0,j=0;
for(i=0;i<4;i++)
for(j=0;j<2;j++){
if(j=0) b[i][j]=1;
else b[i][j]=0;
}
}
void move(int b[4][2]){
if(食べられるような移動の時) return;
else{
move(b); //moveを再帰呼び出しする
}
printstate(b);
}
void printstate(int b[4][2]){
int i,j;
for(i=0;i<4;i++){
for(j=0;j<2;j++)
printf("%3d",b[i][j]);
printf("\n");
}
}
このような感じです。
move関数がまだできていません
移動の制御の部分ができていません。move関数ないで移動を制御をするには
どのようにすればよいでしょうか。教えてくださいお願いします。