POJ3009の問題について
Posted: 2013年6月26日(水) 22:50
POJの問題を解いていたのですが、
http://poj.org/problem?id=3009
サンプルインプットや20×20などの検証はあっているのにもかかわらず
WrongAnswerになってしまいました。
おかしな点がありましたらご指摘お願いいたします。
http://poj.org/problem?id=3009
#include<stdio.h>
int map[21][21],m[5]={0,1,0,-1,0},mh,mw,mt;
void s(int h,int w,int t)
{
int i,j,x=w,y=h;
if(t<11)
{
for(i=j=0;i<4;x=w,y=h,j=0,i++)
{
while(++j)
{
y+=m[i];
x+=m[i+1];
if(map[y][x]==3)
{
mt=t+1<mt?t+1:mt;
return;
}
if((0>y||y>=mh||0>x||x>=mw)||(j==1&&map[y][x]==1))
break;
if(map[y][x]==1)
{
map[y][x]--;
s(y-m[i],x-m[i+1],t+1);
map[y][x]++;
break;
}
}
}
}
}
int main()
{
int i,j,sh,sw;
for(;;)
{
scanf("%d%d",&mw,&mh);
if(mw==0&&mh==0)
return 0;
for(i=0;i<mh;i++)
for(j=0;j<mw;j++)
{
scanf("%d",&map[i][j]);
if(map[i][j]==2)
sh=i,sw=j;
}
mt=11;
s(sh,sw,0);
printf("%d\n",mt>10?-1:mt);
}
}
WrongAnswerになってしまいました。
おかしな点がありましたらご指摘お願いいたします。