zoukankan      html  css  js  c++  java
  • 寻宝

    Description

    有这么一块神奇的矩形土地,为什么神奇呢?因为上面藏有很多的宝藏。该土地由N*M个小正方形土地格子组成,每个小正方形土地格子上,如果标有“E”,则表示该格可以通过;如果标有“X”,则表示该格不能通过。现在你处于其中的一格上,用“P”表示,你只能向与你所在格子相邻的上、下、左、右四个方向移动,当然如果你即将移向的格子上标有“X”,则不能通过。现在的任务是:如果你能从起点通过每个用“E”标示的格子一次且仅一次,则你将寻宝成功,否则则失败。

    Input

    输入包括如下几部分。 第一部分:输入两个数N(1<=N<=6)和M(1<=M<=6),分别表示该土地的行和列。 第二部分:输入一个只能由“P”、“X”、“E”构成的N*M大小的矩阵,且“P”只能出现一次,代表你当前所在位置。

    Output

    如果能寻宝成功,输出“YES”;否则输出“NO”。

    Sample Input

    2  2
    PE
    ES
    
    4  4
    PXEE
    EXEE
    EEEE
    EEEE
    

    Sample Output

    NO
    YES




    #include<stdio.h>
    int k,c[4][2]={-1,0,0,-1,1,0,0,1};
    int b[6][6];
    void sort(char a[][6],int x,int y)
    {
    int i;
    for(i=0;i<4;i++)
    {
    if(a[x+c[i][0]][y+c[i][1]]=='E'&&b[x+c[i][0]][y+c[i][1]]==0)
    {
    k++;
    x+=c[i][0],y+=c[i][1];
    b[x][y]=1;
    sort(a,x,y);
    }
    }
    }
    void main()
    {
    int i,j,m,n,x,y;
    while(scanf("%d %d",&m,&n)!=EOF)
    {
    k=0;
    int t=0;
    char a[6][6];
    for(i=0;i<m;i++)
    {
    scanf("%s",a[i]);
    for(j=0;j<n;j++)
    {
    b[i][j]=0;
    if(a[i][j]=='P')x=i,y=j,b[i][j]=1;
    else if(a[i][j]=='E')t++;
    }
    }
    sort(a,x,y);
    if(k==t)printf("YES ");
    else printf("NO ");
    }
    }

  • 相关阅读:
    标签,css,排版
    浏览器的内核
    焦点事件
    cookie
    浏览器的行为
    百叶窗分析
    水仙花数
    递归函数
    拖拽的问题解决
    正则的具体
  • 原文地址:https://www.cnblogs.com/zhang20115330/p/3155803.html
Copyright © 2011-2022 走看看