c++的问题-ACM北大POJ_1376代码提交一直WA,求大神看看哪里错了?呜呜

问题描述

ACM北大POJ_1376代码提交一直WA,求大神看看哪里错了?呜呜

#include
#include
#include
using namespace std;
bool Map[55][55];
bool vis[55][55][4]; //[4] 四个directions,坐标和方向都相同时不能同时经过该点两次;
int M,N;
bool flag=false; //找到路径置为true;
typedef struct
{
int x,y; //坐标;
int time; //走到当前格子所用时间;
int dir; //当前格子所朝方向;
}point;

point Start,End;
bool canPass(int x,int y,int direction)
{
if(x<=0||x>=M||y<=0||y>=N) //走到边界;
return false;
if(vis[x][y][direction]|| !Map[x][y]|| !Map[x+1][y]|| !Map[x][y+1]||!Map[x+1][y+1])
return false;
else
return true;
}
void bfs()
{
point temp,temp1;
queue q;
while(!q.empty()) //调用完后要清空队列;
q.pop();
int dir1,dir2;
q.push(Start);
vis[Start.x][Start.y][Start.dir]=true;
while(!q.empty())
{
temp=q.front();
q.pop();
if((temp.x==End.x)&&(temp.y==End.y)) //到达终点;
{
flag=true;
cout<
return;
}
dir1=(temp.dir+1)%4; //0为south,1为east,2为north,3为west,每次转90度刚好dir+1或dir-1对4取余即可
dir2=(temp.dir-1+4)%4;
temp1=temp;
if(!vis[temp1.x][temp1.y][dir1]) //相同点不同方向没有访问过则入队;
{
vis[temp1.x][temp1.y][dir1]=true;
temp1.dir=dir1;
temp1.time++;
q.push(temp1);
}
temp1=temp;
if(!vis[temp1.x][temp1.y][dir2])
{
vis[temp1.x][temp1.y][dir2]=true;
temp1.dir=dir2;
temp1.time++;
q.push(temp1);
}
for(int i=0;i
{
switch(temp.dir)
{
case 0: temp.x++; break;
case 1: temp.y++; break;
case 2: temp.x--; break;
case 3: temp.y--; break;
}
if(!canPass(temp.x,temp.y,temp.dir))
break;
else
{
vis[temp.x][temp.y][temp.dir]=true;
if(i==0)
temp.time++; //走1,2,3步都只需要耗时1秒,只需要第一次走一步时间加1就行;
q.push(temp);
}
}
}
}
int main()
{
int t;
string s;
while(cin>>M>>N&&(M||N))
{
memset(Map,false,sizeof(Map));
memset(vis,false,sizeof(vis));
flag=false;
for(int i=1;i<=M;i++)
{
for(int j=1;j<=N;j++)
{
cin>>t;
Map[i][j]=t==0?true:false; //true(0)表示可以通行,false(1)表示不能走;
}
}
cin>>Start.x>>Start.y>>End.x>>End.y;
cin>>s;
if(!canPass(Start.x,Start.y,Start.dir) ||!canPass(End.x,End.y,End.dir))
{
cout<<"-1"<<endl;
continue; //起始点和终点如果在边界或本身是障碍物则直接输出-1返回;
}
if(s=="south")
Start.dir=0;
else if(s=="east")
Start.dir=1;
else if(s=="north")
Start.dir=2;
else if(s=="west")
Start.dir=3;
bfs();
if(flag==false)
cout<<"-1"<<endl;
}
return 0;
}

解决方案

这么长的代码,怎么看啊。自己有调试过吗?

时间: 2024-11-02 10:29:49

c++的问题-ACM北大POJ_1376代码提交一直WA,求大神看看哪里错了?呜呜的相关文章

ext表单提交出错,求大神帮助

问题描述 ext表单提交出错,求大神帮助 前台页面代码如下: <%@ page language=""java"" contentType=""text/html; charset=utf-8"" pageEncoding=""utf-8""%><!DOCTYPE html PUBLIC ""-//W3C//DTD HTML 4.01 Transit

java项目代码同步问题,求大神指点

问题描述 java项目代码同步问题,求大神指点 一个java项目写了一些代码,然后两个人各自拷贝了项目,各自写了一些代码.现在要合并在一起,怎么合??请指教. 解决方案 使用svn,一个人把项目上传上去,另一个人更新下来,然后把自己的代码覆盖svn跟新下来的代码,提交,在提交的界面上比较提交文件,看看之前一个的代码那些别覆盖了,把他复制下来自己添加上去 解决方案二: 用 svn!!!!! 解决方案三: 用svn版本管理软件.分为服务器端和tortoise(用户端),svn服务器端记载了每个文件的

ormat essage-C++代码看不懂,求大神指点

问题描述 C++代码看不懂,求大神指点 FormatMessage( FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS, NULL, GetLastError(), 0, (LPTSTR) &lpMsgBuf, 0, NULL ); 这段代码不太清楚什么意思,尤其是 (LPTSTR) &lpMsgBuf这句,请大神们指点指点 解决方案 把错误转换成到lpMs

混淆代码-代码混淆问题,求大神帮忙

问题描述 代码混淆问题,求大神帮忙 自己写了个jar包供自己app调用,在jar包中有A方法会抛出自定义异常,在混淆代码后,A方法未混淆,但自定义异常却没有了,求教这是为什么啊.. 谢谢 解决方案 这个谁说的清楚,,具体还是得看代码

c++基础c++-求大神写一段c++代码,做题能做对但是自己写代码就漏洞百出,求大神指导

问题描述 求大神写一段c++代码,做题能做对但是自己写代码就漏洞百出,求大神指导 年龄 Age姓名 char name公有成员函数: 构造函数 带参数的构造函数Student(int mchar); 不带参数的构造函数 Student() 析构函数 -Student() 改变数据成员值函数 void SetMemer(int mchar *) 获取数据成员函数 int GetAge() char * GetName()要求:在main()中定义一个有3个元素的对象数组并分别初始化,然后输出对象数

菜鸟android 照着视频写代码出现NullPointerException 跪求大神解决

问题描述 菜鸟android 照着视频写代码出现NullPointerException 跪求大神解决 package com.example.mp3player; import java.io.StringReader;import java.util.ArrayList;import java.util.HashMap;import java.util.Iterator;import java.util.List; import javax.xml.parsers.SAXParserFact

代码有错误,求大神帮忙指导!!!!

问题描述 代码有错误,求大神帮忙指导!!!! public class ContactsFragment extends Fragment implements OnClickListener { public static String hostIp; private ExpandableListView userList; private UserExpandableListAdapter adapter; private List<String> strGroups; //所有一级菜单名

php-用PHP创建数据库表总是失败,代码如下,跪求大神。。

问题描述 用PHP创建数据库表总是失败,代码如下,跪求大神.. <?php$con = mysql_connect(""localhost""root""xxh2011010015"");if (!$con) { die('Could not connect: ' . mysql_error()); } // Create table in my_db databasemysql_select_db("&quo

Delphi中如何读取dicom的图片格式?代码怎么写?求大神解救

问题描述 Delphi中如何读取dicom的图片格式?代码怎么写?求大神解救