hdu 1035 Robot Motion (DP)
1083 ワード
クリックしてリンクを開く
ps:行数rと列数c、および進入時の列数cc(上から入る)を与え、出られると歩いたステップ数を出力し、出られない場合は数歩出力してループに入り、ループのステップ数を出力します.
ps:行数rと列数c、および進入時の列数cc(上から入る)を与え、出られると歩いたステップ数を出力し、出られない場合は数歩出力してループに入り、ループのステップ数を出力します.
#include<stdio.h>
main()
{
int i,j,b[11][11],k,N,S,E,n,m;
char a[11][11];
scanf("%d%d%d",&N,&S,&E);
while(N!=0&&S!=0&&E!=0)
{
k=0;
for(i=0;i<N;i++)
scanf("%s",a[i]);
for(i=0;i<N;i++)
for(j=0;j<S;j++)
b[i][j]=0;
n=1;
m=E;
b[0][E-1]=1;
for(i=0;i<N*S*2;i++)
{
switch(a[n-1][m-1])
{
case 'E': m++; break;
case 'S': n++; break;
case 'W': m--; break;
case 'N': n--; break;
}
b[n-1][m-1]+=1;
if(n>N||n<1||m>S||m<1)
{
k=1;
break;
}
}
n=m=0;
for(i=0;i<N;i++)
for(j=0;j<S;j++)
{
if(b[i][j]==1) n++;
else if(b[i][j]>1) m++;
}
if(k==1) printf("%d step(s) to exit
",n);
else printf("%d step(s) before a loop of %d step(s)
",n,m);
scanf("%d%d%d",&N,&S,&E);
}
}