题目描述:
就是走黑色瓦片。计算能走过的最多黑色瓦片的数目。
解题思路:
递归。
代码:
#include <stdio.h>
#include <stdlib.h>
#define N 21
char G[N][N];
int M[N][N],f[N][N];
int w,h,pos_x,pos_y,sum;
void move(int x, int y)
{
if(x >= 0 && x < h && y >= 0 && y < w && M[x][y] == 0 && f[x][y] == 0)
{
f[x][y] = 1;
sum++;
move(x+1,y);
move(x-1,y);
move(x,y+1);
move(x,y-1);
}
}
main()
{
int i,j;
scanf("%d %d",&w, &h);
while(w!=0)
{
for(i=0;i<h;i++)
{
scanf("%s",&G[i]);
for(j=0;j<w;j++)
{
if(G[i][j] == '.')
M[i][j] = 0;
else if(G[i][j] == '#')
M[i][j] = 1;
else
{
M[i][j] = 0;
pos_x = i;
pos_y = j;
}
}
}
for(i=0;i<h;i++)
for(j=0;j<w;j++)
f[i][j] = 0;
sum = 0;
move(pos_x, pos_y);
printf("%d\n",sum);
scanf("%d %d",&w, &h);
}
//system("pause");
return 0;
}