7-58 肿瘤诊断 (30 分)

在诊断肿瘤疾病时,计算肿瘤体积是很重要的一环。给定病灶扫描切片中标注出的疑似肿瘤区域,请你计算肿瘤的体积。

输入格式:

输入第一行给出4个正整数:M、N、L、T,其中M和N是每张切片的尺寸(即每张切片是一个M×N的像素矩阵。最大分辨率是1286×128);L(≤60)是切片的张数;T是一个整数阈值(若疑似肿瘤的连通体体积小于T,则该小块忽略不计)。

最后给出L张切片。每张用一个由0和1组成的M×N的矩阵表示,其中1表示疑似肿瘤的像素,0表示正常像素。由于切片厚度可以认为是一个常数,于是我们只要数连通体中1的个数就可以得到体积了。麻烦的是,可能存在多个肿瘤,这时我们只统计那些体积不小于T的。两个像素被认为是“连通的”,如果它们有一个共同的切面,如下图所示,所有6个红色的像素都与蓝色的像素连通。

输出格式:

在一行中输出肿瘤的总体积。

输入样例:

3 4 5 2
1 1 1 1
1 1 1 1
1 1 1 1
0 0 1 1
0 0 1 1
0 0 1 1
1 0 1 1
0 1 0 0
0 0 0 0
1 0 1 1
0 0 0 0
0 0 0 0
0 0 0 1
0 0 0 1
1 0 0 0

结尾无空行

输出样例:

26

结尾无空行

#include<iostream>
#include<cstring>
#include<queue>
using namespace std;
struct Node{int x,y;int floot;
}node,nodes;
//使用结构体主要是在搜索的时候方便记录
queue<struct Node>q;
bool a[64][1300][130];//下标依次是层数,像素横坐标纵坐标
bool book[64][1300][130];
//nexts数组控制方向
int nexts[6][3]={{1,0,0},{-1,0,0},{0,0,1},{0,0,-1},{0,1,0},{0,-1,0}};
int main(){int n,m,l,t;int sum=0;int num,flag;cin>>n>>m>>l>>t;memset(a,0,sizeof(a));memset(book,0,sizeof(book));//输入for(int i=1;i<=l;i++){for(int j=1;j<=n;j++){for(int k=1;k<=m;k++){cin>>flag;if(flag==1){a[i][j][k]=true;}}}}for(int i=1;i<=l;i++){for(int j=1;j<=n;j++){for(int k=1;k<=m;k++){num=0;if(a[i][j][k]==true&&book[i][j][k]==false){node.x=j;node.y=k;node.floot=i;q.push(node);book[i][j][k]=true;num++;while(!q.empty()){node=q.front();q.pop();for(int f=0;f<6;f++){int floots=node.floot+nexts[f][0];int xs=node.x+nexts[f][1];int ys=node.y+nexts[f][2];if(a[floots][xs][ys]==true&&book[floots][xs][ys]==false){nodes.floot=floots;nodes.x=xs;nodes.y=ys;q.push(nodes);book[floots][xs][ys]=true;num++;}}}if(num>=t){sum+=num;}}}}}cout<<sum<<endl;return 0;
}

解题思路: 
解题思路: 
1.内存的优化,把整型的全部换成bool型的 
2.深搜容易爆栈,段错误,所以尽量用广搜(而且时间上也是优势) 
3.注意有几个方向(6个方向),每个方向怎么控制(nexts数组) 
此题相对于复杂的迷宫类搜索还是较水的,有点类似于着色法

7-58 肿瘤诊断 (30 分)相关推荐

  1. 【CCCC】L3-004 肿瘤诊断 (30分),三维BFS

    problem L3-004 肿瘤诊断 (30分) 在诊断肿瘤疾病时,计算肿瘤体积是很重要的一环.给定病灶扫描切片中标注出的疑似肿瘤区域,请你计算肿瘤的体积. 输入格式: 输入第一行给出4个正整数:M ...

  2. C++学习之路 | PTA(甲级)—— 1099 Build A Binary Search Tree (30分)(带注释)(精简)

    1099 Build A Binary Search Tree (30分) A Binary Search Tree (BST) is recursively defined as a binary ...

  3. 7-58 是否完全二叉搜索树 (30 分)

    7-58 是否完全二叉搜索树 (30 分) 将一系列给定数字顺序插入一个初始为空的二叉搜索树(定义为左子树键值大,右子树键值小),你需要判断最后的树是否一棵完全二叉树,并且给出其层序遍历的结果. 输入 ...

  4. L3-2 还原文件 (30 分)

    L3-2 还原文件 (30 分) 一份重要文件被撕成两半,其中一半还被送进了碎纸机.我们将碎纸机里找到的纸条进行编号,如图 1 所示.然后根据断口的折线形状跟没有切碎的半张纸进行匹配,最后还原成图 2 ...

  5. 7-1 矩阵A乘以B (30 分)

    ** 7-1 矩阵A乘以B (30 分) ** 给定两个矩阵A和B,要求你计算它们的乘积矩阵AB.需要注意的是,只有规模匹配的矩阵才可以相乘.即若A有R a 行.C a列,B有Rb 行.Cb 列,则只 ...

  6. 2020年天猫双11:11日0点30分 实时成交额突破3723亿

    11月11日消息,根据天猫公布的数据显示,11月1日至11日0点30分,2020年天猫双11全球狂欢季实时成交额突破3723亿,实时成交额超过1亿元的品牌已经超过300个. 在2020天猫双11全球狂 ...

  7. 【CCCC】L3-010 是否完全二叉搜索树 (30分),完全二叉树判断+层次遍历(奇怪的方法)

    problem L3-010 是否完全二叉搜索树 (30分) 将一系列给定数字顺序插入一个初始为空的二叉搜索树(定义为左子树键值大,右子树键值小),你需要判断最后的树是否一棵完全二叉树,并且给出其层序 ...

  8. 58到家数据库30条军规解读

    军规适用场景:并发量大.数据量大的互联网业务 军规:介绍内容 解读:讲解原因,解读比军规更重要 一.基础规范 1.必须使用InnoDB存储引擎 解读:支持事务.行级锁.并发性能更好.CPU及内存缓存页 ...

  9. 08-图9 关键活动 (30 分)

    08-图9 关键活动 (30 分) 假定一个工程项目由一组子任务构成,子任务之间有的可以并行执行,有的必须在完成了其它一些子任务后才能执行."任务调度"包括一组子任务.以及每个子任 ...

最新文章

  1. Python游戏开发:最强大脑第一关,数字华容道
  2. 激光雷达与摄影测量相结合如何提高点云质量?
  3. linux curl编译 arm交叉编译
  4. CentOS7下的离线yum源搭建
  5. CentOS 7上安装 MongoDB数据库 4.0.0最新版
  6. OpenGL(二)——OpenGL图形绘制
  7. H3C模拟器里的F1060防火墙如何开启WEB界面
  8. [翻译]jQuery 1.5.1 发布,全面支持IE9
  9. 黑马程序员---java基础-----------------图形化界面(GUI)
  10. 连载:面向对象的葵花宝典:思维、技能与实践(40) - DECORATOR模式
  11. Python二维数组,坑苦了
  12. 用户列表 html,用户列表.html
  13. 宗成庆《文本数据挖掘》学习笔记:第二章 数据预处理和标注
  14. MySQL编码转换防止SQL注入_防止SQL注入和XSS注入的方法总结
  15. vxe下拉框样式被覆盖
  16. 这15个PDF转化工具
  17. unity | 写一个XML和用unity读取XML
  18. 如何应对工作中的冲突?
  19. 将qq目录下文件写如qq.txt
  20. OpenCV图像特征提取学习三,LBP图像特征检测算法

热门文章

  1. 2019年网络规划设计师上午真题及答案解析
  2. react native bundle读取assets_react-native-easy-app 详解与使用之 (一)AsyncStorage
  3. 浅谈Oracle中物理结构(数据文件等。。。)与逻辑结构(表空间等。。。。。)
  4. hdu 2191悼念512汶川大地震遇难同胞——珍惜现在,感恩生活(多重背包)
  5. 网络IPC:套接字之套接字描述符
  6. 转:谈谈Unicode编码,简要解释UCS、UTF、BMP、BOM等名词
  7. MongoDB 核心将支持全文搜索功能 (2.3.2)
  8. flutter网络dio框架get请求使用总结
  9. 使用RemObjects Pascal Script
  10. 【转】深入分析JAVA IO(BIO、NIO、AIO)