爱编程的大李子 2021-03-29 04:05 采纳率: 50%
浏览 87

大佬们,我这个程序哪里写的不对,测试案例通过了50%.

题目地址:https://ac.nowcoder.com/acm/problem/15434

自己的代码

#include<iostream>
#include<string.h>
using namespace std;
int n,p,q,beginX,beginY,endX,endY,tx,ty;//beginX,beginY:初始坐标  endX,endY:结束坐标
char map[505][505];//地图 
bool book[505][505],flag;//book:做标记 

int NEXT[4][2] = { {-1,0},{0,1},{1,0},{0,-1} };//方向数组
void dfs(int x, int y) {
	if (flag) {//如果已经找到路线则回溯时不再进行其他路线.
		return;
	}
	if (x == endX && y == endY) {
		flag = true;//做标记 
		return;
	}
	
	for (int i = 0; i <= 3; i++)
	{
		tx = x + NEXT[i][0];
		ty = y + NEXT[i][1];
		
		if (tx < 1 || tx>p || ty <1 || ty>q||map[tx][ty]=='x') {//判断是否越界和是否是障碍物 
			continue;
		}
		if (map[tx][ty] == '.' && book[tx][ty] == false) {
			book[tx][ty] = true;
			dfs(tx, ty);
			book[tx][ty] = false;//回溯查看其他路线 
		}
	}
}

int main()
{
	cin >> n;
	while (n--)
	{
		flag = false;
		memset(map, '\0',sizeof(map));
		memset(book, false, sizeof(book));
		cin >> p >> q;
		for (int i = 1; i <= p; i++) {
			for (int j = 1; j <= q; j++) {
				cin >> map[p][q];
				if (map[p][q] == 's') {
					beginX = p;
					beginY = q;
				}
				if (map[p][q] == 't') {
					endX = p;
					endY = q;
				}
			}
		}
		dfs(beginX, beginY);
		book[beginX][beginY] = true;
		if (flag) {
			cout << "YES" << endl;
		}
		else {
			cout << "NO" << endl;
		}
	}
	return 0;
}

展开全部

  • 写回答

2条回答 默认 最新

  • 开发者小峰 2021-03-29 05:42
    关注

    for (int i = 1; i <= p; i++) {

    for (int j = 1; j <= q; j++) {

    cin >> map[p][q];

    if (map[p][q] == 's') {

    beginX = p;

    beginY = q;

    }

    if (map[p][q] == 't') {

    endX = p;

    endY = q;

    }

    }

    }这里面用p和q不是每次都一样了

    评论
  • 爱编程的大李子 Java领域新星创作者 2021-04-22 05:28
    关注

    已解决

     

    评论
编辑
预览

报告相同问题?

悬赏问题

  • ¥15 PADS Logic 原理图
  • ¥15 PADS Logic 图标
  • ¥15 电脑和power bi环境都是英文如何将日期层次结构转换成英文
  • ¥20 气象站点数据求取中~
  • ¥15 如何获取APP内弹出的网址链接
  • ¥15 wifi 图标不见了 不知道怎么办 上不了网 变成小地球了
手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部