poj_1979_递归

来源:互联网 发布:淘宝手机端首页模版 编辑:程序博客网 时间:2024/06/06 21:39

题目描述:

   就是走黑色瓦片。计算能走过的最多黑色瓦片的数目。

 

解题思路:

   递归。

 

代码:

#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;
}

 

原创粉丝点击