zoukankan      html  css  js  c++  java
  • 做一名聪明的CS玩家

    作为计算机学院的学生,CS应该是大家都很熟悉的一款游戏。那么如果你是一个真正的CS玩家,不如来试下这道题目吧。 当你在CSing的时候,什么事情最让你郁闷呢,估计就是当你与敌人刚要开战的时候,发现自己没有子弹了吧^_^。这个时候最聪明的选择就是赶快回到老家去买子弹继续战斗。那么怎样回到老家需要的时间最短呢??
    Input输入的第一行有两个整数N,M分别表示的是地图的宽和长(1 =< M =< N <= 100),接下来的N行分别输入CS地图的具体情况。‘@’表示的是你现在所在的位置,‘#’表示的你老家的位置,‘X’表示的是敌人可能出现的位置,虽然是可能出现的位置,但是没有子弹的你显然不愿意冒险走这个位置,即使要节省时间。 ‘*’表示的是你可以放心走过的安全位置。
    Output求出在保证安全的条件下从‘@’到老家‘#’所需要的最小时间并且输出,假设每走一步需要一个单位的时间,且你只能向上下左右四个方向走,并且不能走出CS地图的范围。如果通过安全的位置点无法到达老家,则输出“GAME OVER”

    Sample Input

    5 5
    ***XX
    *@XXX
    **XX#
    ***X*
    *****
    

    Sample Output

    8


    #include<stdio.h>
    int a[4][2]={-1,0,0,-1,0,1,1,0};
    int b[100][100]={0},m,n,min=0;
    char s[100][100];
    void sort(int x,int y,int sum)
    {
    int i;
    if(s[x][y]=='#'||sum>=min)
    {
    if(min>sum)min=sum;
    return;
    }
    for(i=0;i<4;i++)
    if(x+a[i][0]>=0&&y+a[i][1]>=0&&x+a[i][0]<m&&y+a[i][1]<n)
    if(!b[x+a[i][0]][y+a[i][1]]&&s[x+a[i][0]][y+a[i][1]]!='X')
    {
    b[x+a[i][0]][y+a[i][1]]=1;
    sort(x+a[i][0],y+a[i][1],sum+1);
    b[x+a[i][0]][y+a[i][1]]=0;
    }
    }
    void main()
    {
    int i,j,x=-1,y;
    scanf("%d %d",&m,&n);
    for(i=0;i<m;i++)
    {
    scanf("%s",s[i]);
    for(j=0;j<n&&x==-1;j++)
    if(s[i][j]=='@')x=i,y=j,b[i][j]=1;
    }
    min=m*n,sort(x,y,0);
    if(min==m*n)printf("GAME OVER ");
    else printf("%d ",min);
    }

  • 相关阅读:
    线程 详解
    登录时,添加图片验证码
    String、StringBuffer、StringBuilder详解
    Random 生成随机数
    down
    九九归一
    小R与手机
    coins
    noip注意事项
    小W计树
  • 原文地址:https://www.cnblogs.com/zhang20115330/p/3232103.html
Copyright © 2011-2022 走看看