马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
题目网址 迷宫
我的代码#include<cstdio>
#define MAX 100
#include<iostream>
using namespace std;
int map[MAX][MAX]{}; //迷宫与起点连通部分
char maze[MAX][MAX]{}; //存放迷宫
bool visit[MAX][MAX]{}; //记录已经访问的结点
int xstep[4] = {0,1,0,-1}; //从一个点的四个方向
int ystep[4] = {1,0,-1,0};
int num; //迷宫边长
void init(int n); //初始化
bool find_map(int x, int y, int num); //返回map[x][y]
void in_maze(int n); //输入迷宫,从键盘
int validate(int x, int y, int num); //(x,y)没越界则返回true
void our_map(int num); //输出
void search(int x,int y); //递归深度优先搜索
int main() {
int times;
scanf("%d", ×);
for(int t = 0; t < times; t++) {
int start[2]{}, end[2]{};
scanf("%d", &num);
in_maze(num);
scanf("%d%d%d%d", &start[0], &start[1], &end[0], &end[1]);
map[start[0]][start[1]] = 1;
search(start[0], start[1]);
if(find_map(end[0], end[1], num))
printf("YES\n");
else
printf("NO\n");
// our_map(num);
init(num);
}
return 0;
}
//---------------------------------
bool find_map(int x, int y, int n) {
return map[x][y];
}
//---------------------------------
void in_maze(int n) {
for(int i = 0; i < n; ++i) {
for(int j = 0; j < n; ++j) {
scanf(" %c", &maze[i][j]);
}
}
}
//---------------------------------
int validate(int x, int y, int N){
if(x >= 0 && x <= N - 1 && y >= 0 && y <= N - 1){
return 1;
}
return 0;
}
//---------------------------------
void our_map(int num) {
cout << endl << "map:" << endl;
for(int i = 0; i < num; ++i) {
for(int j = 0; j < num; ++j) {
cout << map[i][j] << " ";
}
cout << endl;
}
}
//---------------------------------
void init(int n) {
for(int i = 0; i < n; ++i) {
for(int j = 0; j < n; ++j) {
maze[i][j] = 0;
map[i][j] = 0;
visit[i][j] = 0;
}
}
}
//---------------------------------
void search(int x,int y){
if(visit[x][y] == 1)
return;
visit[x][y] = 1;
for(int k = 0; k < 4; k++) {
int x1 = x + xstep[k];
int y1 = y + ystep[k];
if(validate(x1, y1, num) && maze[x][y] == '.') {
if(find_map(x1, y1, num)) {
map[x][y] = 1;
}
}
}
for (int i=0;i<4;i++){
int x1=x+xstep[i];
int y1=y+ystep[i];
if(validate(x1,y1,num) && maze[x1][y1] == '.'){
search(x1, y1);
}
}
}
题目网站就一直10分只给我5分,怎么办呀,这是为什么 |