随笔 - 6, 文章 - 5, 评论 - 0, 引用 - 0
数据加载中……

[vijos] P1681 小岛土地开发的期待

很简单的一道搜索题目,而且难度为1.但几乎没怎么写过保存路径的题目。。。所以。。。
#include <stdio.h>
#include <memory.h>
int wayx[4]={-1,0,0,1};
int wayy[4]={0,-1,1,0};
int vis[10][10];
int m,n;
int sx,sy;
int a[10][10];
long ans;


struct way
{
int xx;
int yy;
}sum[30],ansxy[30];





void
init()
{
      //freopen("one1.in","r",stdin);
      char s;
      scanf("%d%d",&m,&n);
      scanf("%c",&s);
      int i,j;

      for(i=1;i<=n;i++)
      {
                       for(j=1;j<=m;j++)
                       {
                                        scanf("%c",&s);
                                        if(s == 'S')
                                        {
                                         sx = i;
                                         sy = j;
                                         a[i][j] = 1;
                                         
                                         }
                                         else if(s == '1')a[i][j]=1;
                                         else if(s == '0')a[i][j]=0;
                                         
                       }
                                         scanf("%c",&s);
      }
}




void
dfs(int x,int y,int num)
{
        int u,v;
        sum[num].xx = x;
        sum[num].yy = y;

        if(num > ans)
        {
             memcpy(ansxy,sum,30*8);
             ans = num;
        }
        vis[x][y]=1;
        int i;
        for(i=0;i<4;i++)
        {
                
                u = x + wayx[i];
                v = y + wayy[i];
                if(u<=n && v<= m&& u>0 && v>0 && !vis[u][v] && a[u][v])
                        dfs(u,v,num+1);
               
                 
        }
        vis[x][y]=0;
}

void
write()
{
      // freopen("1.out","w",stdout);
       printf("%ld\n",ans);
       int i;
       for(i=1;i<=ans;i++)
       {
                          printf("(%d,%d)\n",ansxy[i].xx,ansxy[i].yy);
       }
}

int
main()
{
      init();
      dfs(sx,sy,1);
      write();
      return 0;
}

{
   PS:
         1,memcpy的用法
         2,这道题目需要考虑搜索顺序
         3,注意   x是行,y是列  WA了几次
         4,在函数里。。。。。重新定义了与全局变量的局部变量。。。导致WA了很多次。。

posted on 2012-10-22 20:47 slytherin 阅读(77) 评论(0)  编辑 收藏 引用 所属分类: VIJOS


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理