题目链接:点击打开链接

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

输入格式:

输入第一行给出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个红色的像素都与蓝色的像素连通。


Figure 1

输出格式:

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

输入样例:

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

思路:看到样例就是要广搜。题意中是立体的,所以要用三维数组存储。 还有就是 只看周围的六个方向,不带自己。
AC代码:
#include<iostream>
#include<queue>
#include<algorithm>
#include<stack>
#include<string>
#include<map>
#include<set>
#include<cstring>
using namespace std;
const int MAX = 1010;
const int INF = 0X3f3f3f;
bool arr[1300][130][80];//bool类型 不会超内存
bool vis[1300][130][80];
int X[6] = {1, 0, 0, -1, 0, 0};//访问周围的数组
int Y[6] = {0, 1, 0, 0, -1, 0};
int Z[6] = {0, 0, 1, 0, 0, -1};int n, m, l, t;
struct node{int x;int y;int z;node() {}node(int _x, int _y, int  _z):x(_x), y(_y), z(_z) {}
};bool judge(int x, int y, int z) { //判断该点是否需要访问if(x < 0 || x >= n || y < 0 || y >= m || z < 0 || z >= l) return false;//出界if(arr[x][y][z] == false || vis[x][y][z] == true) return false;//该点为0 或者 被访问过了 return true;
}int bfs(int x, int y, int z) {int ans = 0;//记录周围1 的个数queue<node> q;//开队列q.push(node(x, y, z));//起点压入vis[x][y][z] = true;//标记访问过while(!q.empty()) {//不为空 就一直继续node top = q.front();//取出队首元素q.pop();//清除队首元素++ans;//在这里累加for(int i = 0; i < 6; i++) { // 用数组来访问周围的点int newx = top.x + X[i];int newy = top.y + Y[i];int newz = top.z + Z[i];if(judge(newx, newy, newz)) { // 判断是否符合q.push(node(newx, newy, newz));//压入vis[newx][newy][newz] = true;//标记}}}return ans >= t ? ans : 0; // 满足阈值 就返回
}int main() {int i, j, k;//       i, j, k    容易弄混 厚度 应该在最外层   也不要打错cin >> n >> m >> l >> t;for(int i = 0; i < l; i++) {for(int j = 0; j < n; j++) {for(int k = 0; k < m; k++) {scanf("%d", &arr[j][k][i]);}}}int sum = 0;for(int i = 0; i < l; i++) {for(int j = 0; j < n; j++) {for(int k = 0; k < m; k++) {//这里的条件我刚开始用judge判的,出错了if(arr[j][k][i] == true && vis[j][k][i] == false) {sum += bfs(j, k, i);}}}}cout << sum;return 0;
}

转载于:https://www.cnblogs.com/ACMerszl/p/9573003.html

PAT天梯赛L3-004 肿瘤诊断相关推荐

  1. 2021/4/24团队设计天梯赛L3题目集及部分题解

    2021/4/24团队设计天梯赛L3题目集及部分题解: 以下题解都是通过PTA测试的,大致保证正确性: 查看题目戳此::PTA题目集 L3题目集 L3-01 森森旅游 (30 分) L3-02 还原文 ...

  2. PAT - 天梯赛 L3-004 肿瘤诊所 (BFS 三维广搜)

    L3-004. 肿瘤诊断 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 陈越 在诊断肿瘤疾病时,计算肿瘤体积是很重要的一环.给定病灶 ...

  3. pat天梯赛L1-052. 2018我们要赢

    L1-052. 2018我们要赢 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 陈越 2018年天梯赛的注册邀请码是"20 ...

  4. PAT天梯赛Level2题目题解汇总

    L2-001 紧急救援 /******************************************************************************* Date: 2 ...

  5. PAT天梯赛 L1-050 倒数第N个字符串

    题目链接:点击打开链接 给定一个完全由小写英文字母组成的字符串等差递增序列,该序列中的每个字符串的长度固定为 L,从 L 个 a 开始,以 1 为步长递增.例如当 L 为 3 时,序列为 { aaa, ...

  6. pat天梯赛L1-050. 倒数第N个字符串

    L1-050. 倒数第N个字符串 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 陈越 给定一个完全由小写英文字母组成的字符串等差递增 ...

  7. PAT天梯赛练习题——L3-005. 垃圾箱分布(暴力SPFA)

    L3-005. 垃圾箱分布 时间限制 200 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 陈越 大家倒垃圾的时候,都希望垃圾箱距离自己比较近,但是谁 ...

  8. pat天梯赛L2-025. 分而治之

    L2-025. 分而治之 时间限制 600 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 陈越 分而治之,各个击破是兵家常用的策略之一.在战争中,我们 ...

  9. pat天梯赛L1-056. 猜数字

    L1-056. 猜数字 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 陈越 一群人坐在一起,每人猜一个 100 以内的数,谁的数字最 ...

最新文章

  1. ROStopic 通信方式
  2. dbscan论文_论文分享 :Linkage Based Face Clustering via GCN
  3. FFT快速傅式变换算法halcon算子,持续更新
  4. JWT【JSON Web Token】 简述
  5. 解决mysql锁表终极方法
  6. 对于Python函数与方法,你可能存在些误解
  7. 双显卡单独分辨率_甜点光追显卡—带你实现GAMING梦!!!
  8. FTP服务器架设速成手册
  9. java 极光_极光IM系列之java后台集成
  10. 三款常用IP发包工具介绍
  11. 用C语言读把SGY地震数据读成txt
  12. MT【133】磨刀不误砍柴工
  13. 多个模型融合训练神经网络-devise模型的实现
  14. Scala学习笔记01
  15. 微信小程序,Python爬虫抓包采集实战,采集某成考题库小程序
  16. 轻轻一扭,迎来温暖柔风,告别手脚冰凉,卡蛙桌面暖风机上手
  17. CTF 流量分析Wireshark Certificate例题
  18. Linux CFS调度算法核心解析
  19. [LCT刷题][连通性维护] P3950 部落冲突
  20. OSG中使用png图片显示透明效果

热门文章

  1. python常见内置函数_python常见的内置函数
  2. 树莓派编译一个C程序
  3. java与jquery的选择器区别_java day44【JQuery 基础:概念,快速入门,JQuery对象和JS对象区别与转换,选择器,DOM操作,案例】...
  4. linux mysql 单机主从_MariaDB单机双实例主从复制
  5. pythonshell画图_Python3使用plotly模块保存图片与shell下生成表格
  6. python openstack rabbitmq_OpenStack--Rabbitmq组件消息队列
  7. Java实验实现一个circle类,java实验报告-类的定义.doc
  8. 计算机应用对口升学后能学啥专业,计算机应用专业的对口升学生考什么大学好...
  9. mysql binlog过期策略_MySQL binlog日志优化方案
  10. java 接口 签名机制_java – 当接口A在其方法签名中定义接口B时