2 u013921650 u013921650 于 2014.09.06 15:37 提问

poj3009题无法AC,但是测试数据对,如何解决
acm

#include
int ans;
int dx[4]={1,0,-1,0},dy[4]={0,1,0,-1};
int m,n;
int square[30][30]={0};

void dfs(int x,int y,int step);

int main()
{
int i,j;
int p,q;
ans=12;
while(scanf("%d%d",&m,&n)!=EOF&&(m+n))
{
for(i=0;i<n;i++)
for(j=0;j<m;j++)
{
scanf("%d",&square[i][j]);
if(square[i][j]==2)
{
square[i][j]=0;
p=i;
q=j;
}
}
dfs(p,q,0);
if(ans<11)
printf("%d\n",ans);
else
printf("-1\n");
}
}

void dfs(int x,int y,int step)
{
int i,xx1,yy1,xx,yy;
if(step>10)
return;
for(i=0;i {
xx=x+dx[i];
yy=y+dy[i];
if(step=0&&xx=0&&yy {
while(xx>=0&&xx=0&&yy {
xx=xx+dx[i];
yy=yy+dy[i];
}
xx1=xx-dx[i];
yy1=yy-dy[i];
if(xx>=0&&xx=0&&yy<m)
{
if(square[xx][yy]==3)
ans=step+1;
else
{
square[xx][yy]=0;
dfs(xx1,yy1,step+1);
square[xx][yy]=1;
}
}
}
}
}

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
poj3009深搜最小步数
 本题是用深搜求两点之间的最短路的基本应该,不过形式比较新,起初我用的是广搜,所有数据和discuss上的数据都过了却不能AC,无奈只好求助深搜。广搜的bug可能是并发前进时于障碍物相撞后障碍物消失,可能应该其他步的轨迹。还有就是我原来用的是#include using namespace std;提交居然CE,老说我的min有问题,后来换成#include 就无条件过了&。&还有就是昨天的博文竟然没有发上,狂倒,人品不及会升啊》》》》》》怨妇了这么久,把代码安葬下,甩把鼻涕,继续在搜索的浮云中滚掘轱辘爬—
教主们:虽然这道题我不会,但Ac还是没问题的。
wywcgs:亦称Lord Wu,俗名吴垠,2009级厦门大学智能科学与技术学院研究生,本科就读于哈尔滨工业大学。因其深厚的算法功底与独到的思维方式,被尊为“吴教主”,至今声威犹存。2006年起参加ACM/ICPC竞赛,获得分别获得上海、西安、长春三枚区域赛银牌。2008年获得GCJ-BeiJing Onsite参赛资格,并在比赛中表现优异,获得Final资格,后因个人原因,推掉了总决赛资格,并忙
AC自动机习题集
@notonlysuccess http://www.cs.uku.fi/~kilpelai/BSA05/lectures/slides04.pdf http://www.docin.com/p-46845432.html(上边原文地址如果无法访问的话可以访问这一个~) 这是我找到的AC自动机最好的资料 感觉网上其他一些资料都没能阐述的很好,只是草草的介绍一下fail指针,画几张草图而已,
POJ 3009 Curling 2.0 {深度优先搜索}
原题$On Planet MM-21, after their Olympic games this year, curling is getting popular. But the rules are somewhat different from ours. The game is played on an ice game board on which a square mesh is ma
【基础练习】【IDA*】codevs1288 埃及分数题解
题目描述 Description 在古埃及,人们使用单位分数的和(形如1/a的, a是自然数)表示一切有理数。 如:2/3=1/2+1/6,但不允许2/3=1/3+1/3,因为加数中有相同的。 对于一个分数a/b,表示方法有很多种,但是哪种最好呢? 首先,加数少的比加数多的好,其次,加数个数相同的,最小的分数越大越 好。 如: 19/45=1/3 + 1/12 + 1/180 19/45=1
ac自动机(基本解析与例题)
简介:AC自动机:Aho-Corasick automation,又称trie图,是一种DFA,该算法在1975年产生于贝尔实验室,是著名的多模匹配算法之一。解决的问题:一个常见的例子就是给出n个单词,再给出一段包含m个字符的文章,让你找出有多少个单词在文章里出现过。要搞懂AC自动机,先得有字典树Trie和KMP模式匹配算法的基础知识。 AC自动机的构造: 1.建立一棵字典树,作为ac自动机的
OJ测试数据
1、USACO 2006年November题目和测试数据的网址 http://ace.delos.com/NOV06 2007年open赛题目和测试数据的网址 http://ace.delos.com/OPEN07 以此类推 2、日本ACM比赛 http://www.acm-japan.org/ http://icpc2010.honiden.nii
HDU 自动刷题机 Auto AC (轻轻松松进入HDU首页)
少年,作为苦练ACM,通宵刷题的你 是不是想着有一天能够荣登各大OJ榜首,俯瞰芸芸众生,唔....要做到这件事情可是需要一定天赋的哦!
ICPC培训,第一次比赛题目、测试数据、我的AC代码
ICPC培训,学校比赛用的题目,我也找来了测试数据,另外,附上了我的AC代码。 代码中有对题目的简单点拨。 希望对你有用。
ac算法--c++实现
注:由于代码中使用了,对象初始化,所以编译的时候必须使用g++,但是可以修改掉C++内容,编程纯c #include #include #include #include const int MAXQ = 500000+10; const int MAXN = 1000000+10; const int MAXK = 26; //自动机里字符集的大小 struct TrieN