• “生化武器”


    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;
    }
    }
    }
    }
    }

  • 相关阅读:
    菜鸟调错(四)——Spring与DWR集成,配置文件报错
    FIFO、LRU、OPT页面调度算法及样例
    JConsole的使用手册 JDK1.5(转)
    jconsole JDK1.6 使用手册 (转)
    CPU利用率与Load Average的区别?
    Load和CPU利用率是如何算出来的 (转发)
    SecureCRT 默认配置
    Java 内存区域和GC机制(转载)
    Java 线程池的原理与实现 (转)
    【转载】java项目中经常碰到的内存溢出问题: java.lang.OutOfMemoryError: PermGen space, 堆内存和非堆内存,写的很好,理解很方便
  • 原文地址:https://www.cnblogs.com/zhang20115330/p/3151117.html
Copyright © 2020-2023  润新知