zoukankan      html  css  js  c++  java
  • “生化武器”

    Description

    在一个封闭的房间里,gogo给大家表演了他的屁遁术,人果然一下没影了,但是他留下的“生化武器”,却以每秒1米的速度向上下左右扩散出去。为了知道自己会不会被“毒”到,你果断写了个算法计算出了“毒气”在t秒时间内可以到达的所有地方。

    Input

    有多组测试数据

    第一行输入n,m,t(0<n,m<=30)

    n和m表示图的行和列,t表示时间 ,‘*’为表演的地点,‘X’是墙,‘.’为空白的地方

    Output

    如果在t秒时间内毒气没有充满房间或刚好充满,输出现在房间里的情况,‘#’表示有‘毒气’的地方

    否则,输出“No”

    每组数据输出后有一个空行

    Sample Input

    9 9 4
    XXXXXXXXX
    X...X...X
    X.*.....X
    X...X...X
    XXXXXXXXX
    X...X
    X...X
    X...X
    XXXXX
    
    5 5 2
    XXXXX
    X...X
    X.*.X
    X...X
    XXXXX

    Sample Output

    XXXXXXXXX
    X###X#..X
    X######.X
    X###X#..X
    XXXXXXXXX
    X...X
    X...X
    X...X
    XXXXX
    
    XXXXX
    X###X
    X###X
    X###X
    XXXXX






    自己的答案

    #include<stdio.h>
    int a[4][2]={1,0,-1,0,0,1,0,-1},u[30][30];
    char b[30][30];
    int m,n,t;
    void print()
    {
    int i,j;
    for(i=0;i<n;i++)
    {
    for(j=0;b[i][j]!='';j++)
    printf("%c",b[i][j]);
    printf(" ");
    }
    printf(" ");
    }
    int sort(int x,int y,int k)
    {
    int i;
    for(i=0;i<4;i++)
    if(b[x+a[i][0]][y+a[i][1]]=='.'&&u[x+a[i][0]][y+a[i][1]]==0)
    {
    u[x+a[i][0]][y+a[i][1]]=1;
    k++;
    k=sort(x+a[i][0],y+a[i][1],k);
    }
    return k;
    }
    void main()
    {
    int i,j,p,l,g,h;
    while(scanf("%d %d %d",&n,&m,&t)!=EOF)
    {
    int d=0;
    int k=0;
    int x,y;
    int c[2][30][2]={0};
    for(i=0;i<n;i++)
    {
    scanf("%s",b[i]);
    for(j=0;b[i][j]!='';j++)
    {
    if(b[i][j]=='*')c[0][0][0]=i,x=i,y=j,c[0][0][1]=j,b[i][j]='#';
    u[i][j]=0;
    }
    }
    k=sort(x,y,k);
    p=1,g=0;
    if(t==0)print();
    else if(t>0&&k==0)printf("No ");
    else
    {
    for(i=1;i<=t;i++)
    {
    h=0;
    for(l=0;l<p;l++)
    {
    for(j=0;j<4;j++)
    {
    if(b[c[d][l][0]+a[j][0]][c[d][l][1]+a[j][1]]=='.')
    {
    b[c[d][l][0]+a[j][0]][c[d][l][1]+a[j][1]]='#';
    c[1-d][h][0]=c[d][l][0]+a[j][0],c[1-d][h][1]=c[d][l][1]+a[j][1];
    h++;
    g++;
    }
    }
    }
    d=1-d;
    p=h;
    if(i==t&&g<=k)
    {
    print();
    break;
    }
    else if(i<t&&g>=k)
    {
    printf("No ");
    break;
    }
    }
    }
    }
    }

  • 相关阅读:
    网络语音视频技术浅议 Visual Studio 2010(转)
    一个增删改查功能开发小结
    Oracle左连接、右连接、全外连接以及(+)号用法(转)
    SICP 习题 (1.37)解题总结
    什么是WEBserver? 经常使用的WEBserver有哪些?
    怎样批量把excel中已显示的科学计数法取消
    设计模式之享元模式(Flyweight)摘录
    HOG特征-理解篇
    Java抓取网页数据(原网页+Javascript返回数据)
    【2012.1.24更新】不要再在网上搜索eclipse的汉化包了!
  • 原文地址:https://www.cnblogs.com/zhang20115330/p/3151117.html
Copyright © 2011-2022 走看看