• 团体程序设计天梯赛 L3-004. 肿瘤诊断


    数组的大小不能开太大,否则会出现段错误

    用bfs而不用dfs,dfs存储太多中间过程,会超内存

      1 #include <stdio.h> 
      2 #include <stdlib.h>
      3 #include <string.h>
      4 #include <stdbool.h>
      5 #define maxm 1286+1
      6 #define maxn 128+1
      7 #define maxl 60+1
      8 //#define maxt maxm*maxn*maxl
      9 #define maxt 1000000
     10 
     11 //bool ***a;
     12 
     13 bool a[1300][150][70];
     14 
     15 long dx[6]={1,-1,0,0,0,0};
     16 long dy[6]={0,0,1,-1,0,0};
     17 long dz[6]={0,0,0,0,1,-1};
     18 
     19 long count=0,area,m,n,l,t;
     20 long x[maxt],y[maxt],z[maxt];
     21 
     22 //void dfs(long x,long y,long z)
     23 //{
     24 //    a[x][y][z]=false;
     25 //    area++;
     26 //    long xx,yy,zz,p;
     27 //    for (p=0;p<6;p++)
     28 //    {
     29 //        xx=x+dx[p];
     30 //        yy=y+dy[p];
     31 //        zz=z+dz[p];
     32 //        if (xx>=1 && xx<=m && yy>=1 && yy<=n && zz>=1 && zz<=l && a[xx][yy][zz])
     33 //            dfs(xx,yy,zz);
     34 //    }
     35 //}
     36 
     37 int main()
     38 {
     39     long i,j,k,p;
     40     long xx,yy,zz,head,tail;
     41     scanf("%ld%ld%ld%ld",&m,&n,&l,&t);
     42     /*
     43     a=(bool ***) malloc (sizeof(bool **)*62);
     44     for (i=0;i<62;i++)
     45         a[i]=(bool **) malloc (sizeof(bool *)*1288);
     46     for (i=0;i<62;i++)
     47         for (j=0;j<1288;j++)
     48             a[i][j]=(bool *) malloc (sizeof(bool )*130);
     49     */
     50     
     51 
     52 //    if (m<n)
     53 //    {
     54 //        for (k=1;k<=l;k++)
     55 //            {
     56 //                for (i=1;i<=m;i++)
     57 //                    for (j=1;j<=n;j++)
     58 //                    {
     59 //                        scanf("%ld",&v);
     60 //                        if (v)
     61 //                            a[j][i][k]=true;
     62 //                        else
     63 //                            a[j][i][k]=false;
     64 //                    }
     65 //            }
     66 //    }
     67 //    else
     68 //    {
     69         for (k=1;k<=l;k++)
     70             {
     71                 for (i=1;i<=m;i++)
     72                     for (j=1;j<=n;j++)
     73                         scanf("%ld",&a[i][j][k]);
     74             }        
     75 //    }
     76     
     77     for (i=1;i<=m;i++)
     78         for (j=1;j<=n;j++)
     79             for (k=1;k<=l;k++)
     80                 if (a[i][j][k])
     81                 {
     82 //                    area=0;
     83 //                    dfs(i,j,k);
     84 ////                    printf("%ld
    ",area);
     85 //                    if (area>=t)
     86 //                        count+=area;
     87                         
     88                     head=0;
     89                     tail=1;
     90                     x[1]=i;
     91                     y[1]=j;
     92                     z[1]=k;
     93                     a[i][j][k]=false;
     94                     while (head<tail)
     95                     {
     96                         head++;
     97                         for (p=0;p<6;p++)
     98                         {
     99                             xx=x[head]+dx[p];
    100                             yy=y[head]+dy[p];
    101                             zz=z[head]+dz[p];
    102                             if (xx>=1 && xx<=m && yy>=1 && yy<=n && zz>=1 && zz<=l && a[xx][yy][zz])
    103                             {
    104                                 a[xx][yy][zz]=false; 
    105                                 tail++;
    106                                 x[tail]=xx;
    107                                 y[tail]=yy;
    108                                 z[tail]=zz;
    109                             }
    110                         }
    111                     }
    112 //                    printf("%ld
    ",tail);
    113                     if (tail>=t)
    114                         count+=tail;            
    115                 }
    116 
    117     printf("%ld",count);
    118     return 0;
    119 }
  • 相关阅读:
    【转】win32内核程序中进程的pid,handle,eprocess之间相互转换的方法
    (ring0)Windows内核根据PID获取进程全路径
    Windows虚拟地址转物理地址(原理+源码实现,附简单小工具)
    指向API的函数指针定义方法
    ListCtrl列表控件设置到指定位置(自滚动,该特性支持虚拟列表)
    【转】VS设置符号表
    物联网三层架构
    五种测试的区别
    CMMI将能力成熟度分为5个级别
    软件的4种维护(更正性、完善性、预防性、适应性)的区别
  • 原文地址:https://www.cnblogs.com/cmyg/p/8589261.html
Copyright © 2020-2023  润新知