zoukankan      html  css  js  c++  java
  • 【模拟】周游列国

                                                                     周游列国
                            Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%lld & %llu

    Description

           大家都知道孔子吧,春秋战国时候的一个老头儿。当时出国还不用护照,所以他经常赶着牛车带着弟子们周游列国。可是这路也并不是那么好走的,当遇到高山时孔子他们就得绕着走了,你得考虑他牛车的实力能不能hold住啊。当然,孔子是个很聪明的人,每次出门前都会四处打听,然后制定出一个赶车路线,然后按照路线去走。但是,由于很多路没有亲自走过他也不确定按这个路线到底能不能周游列国?然而,你有当时的地图,希望你编程判断一下按照孔子的行车路线能不能周游列国。

    Input

           第一行是行车路线即一个字符串只包含L,R,U和D分别代表左走,右走,上走,下走。接下来以上是两个整数H和W,0 < H,W < 20, 代表地图的高和宽。然后是H*W的地图。S代表孔子的起点。标有1~7的区域分别代表7个国家的领土,#代表高山。

    Output

    如果孔子能周游列国即经过这7个国家则输出Yes,否则输出No。

    Sample Input

    RDDDDLRRRRUU
    5 5
    S1111
    22#22
    33#44
    56#77
    56777

    Sample Output

    Yes

    如果遇到#应直接退回到前一状态。
    最后判断当走完设计好的路线后,这7个国家是否都已经走过。
        #include<stdio.h>
    #include<string.h>
    int main()
    {
        int n, m ,i, j, cnt, x, y, len;
        char s[100000], mapp[100][100];
        int vis[10];
        while(~scanf("%s", s))
        {
            cnt =0;
            x = y = 0;//用x,y标记S的位置
            len = 0;
            memset(mapp, 0, sizeof(mapp));
            memset(vis, 0, sizeof(vis));
            scanf("%d%d%*c", &n, &m);
    
            for(i=1; i<=n; i++)
                for(j=1; j<=m; j++)
                {
                    scanf("%c", &mapp[i][j]);
                    if(j==m)
                        scanf("%*c");
                    if(mapp[i][j]=='S')
                    {
                        x = i;
                        y = j;
                    }
                }
            len = strlen(s);
            for(i=0; i<len; i++)
            {
                if(s[i]=='R')
                {
                    y = y+1;
                    if(mapp[x][y]=='#')
                        y = y-1;
    
                    if(mapp[x][y]>='0' && mapp[x][y]<='7')
                        vis[mapp[x][y]-'0'] = 1;
                }
                if(s[i]=='L')
                {
                    y = y-1;
                    if(mapp[x][y]=='#')
                        y = y+1;
    
                    if(mapp[x][y]>='0' && mapp[x][y]<='7')
                        vis[mapp[x][y]-'0'] = 1;
                }
                if(s[i]=='U')
                {
                    x = x-1;
                    if(mapp[x][y]=='#')
                        x = x+1;
    
                    if(mapp[x][y]>='0' && mapp[x][y]<='7')
                        vis[mapp[x][y]-'0'] = 1;
                }
                if(s[i]=='D')
                {
                    x = x+1;
                    if(mapp[x][y]=='#')
                        x = x-1;
    
                    if(mapp[x][y]>='0' && mapp[x][y]<='7')
                        vis[mapp[x][y]-'0'] = 1;
                }
            }
            for(j=0; j<10; j++)
                {
                    if(vis[j]!=0)
                        cnt++;
                }
            if(cnt==7) printf("Yes
    ");
            else printf("No
    ");
        }
        return 0;
    }
    每天训练发现我比别人做的好慢,但是理解的更深刻,如果一开始学一个新知识点就搜模板,那么这样的人是走不远的,毕业之后带走的只有思维,什么荣誉,奖杯都已经不重要了。
  • 相关阅读:
    Html.Partial和Html.RenderPartial, Html.Action和Html.RenderAction的区别
    cygwin下git出现cabundle.crt相关错误的解决办法
    Orchard CMS前台页面为什么没有Edit链接?
    Entity Framework练习题
    分析Autofac如何实现Controller的Ioc(Inversion of Control)
    在Winform,Silvelight,WPF等程序中访问Asp.net MVC web api
    适合.net程序员的.gitignore文件
    如何处理Entity Framework中的DbUpdateConcurrencyException异常
    Asp.net MVC中repository和service的区别
    smplayer中使用srt字幕乱码问题
  • 原文地址:https://www.cnblogs.com/6bing/p/4115678.html
Copyright © 2011-2022 走看看