佬们能帮我see下思路哪错了吗
查看原帖
佬们能帮我see下思路哪错了吗
518277
MaxFantastic楼主2023/9/30 21:31
#include <iostream>

using namespace std;

char map[11][11];

int change_dir(int x){
		switch(x){
			case 5:return 1;
			case 6:return 2;
			case 7:return 3;
			case 8:return 4;
			default:break;
		}
		return x;
	}

struct tchar{
	int x,y,direction;
} farmer,cow;

void drawbegin(){
	cow.direction=1;
	farmer.direction=1;
	for(int i=0;i<=11;i++) map[0][i]='*';
	for(int i=0;i<=11;i++) map[i][0]='*';
	for(int i=0;i<=11;i++) map[11][i]='*';
	for(int i=0;i<=11;i++) map[i][11]='*';
}

bool judge(){
	if((farmer.x==cow.x)&&(farmer.y==cow.y))
		return true;
	return false;
} 

void move(tchar guy){
	switch(guy.direction){
		case 1:{
			if(map[guy.x-1][guy.y]=='*'){
				guy.direction++;
				guy.direction=change_dir(guy.direction);
				return ;
			}
			guy.x--;
			break;
		}
		case 2:{
			if(map[guy.x][guy.y+1]=='*'){
				guy.direction++;
				guy.direction=change_dir(guy.direction);
				return ;
			}
			guy.y++;
			break;
		}
		case 3:{
			if(map[guy.x+1][guy.y]=='*'){
				guy.direction++;
				guy.direction=change_dir(guy.direction);
				return ;
			}
			guy.x++;
			break;
		}
		case 4:{
			if(map[guy.x][guy.y-1]=='*'){
				guy.direction++;
				guy.direction=change_dir(guy.direction);
				return ;
			}
			guy.y--;
			break;
		}
	}
}
int main(){
	
	drawbegin();
	int time=0;
	for(int i=1;i<=10;i++){
		for(int j=1;j<=10;j++){
			cin>>map[i][j];
			switch(map[i][j]){
				case 'C' :{
					cow.x=i;
					cow.y=j;
					map[i][j]='.';
					break;
				}
				case 'F' :{
					farmer.x=i;
					farmer.y=j;
					map[i][j]='.';
					break;
				}
			}
		}
	}
	if(judge()){
		cout<<0;
		return 0;
	}
	while(!judge())
	{
		move(cow);
		move(farmer);
		time++;
	}
	cout<<time;
	return 0;
}
2023/9/30 21:31
加载中...