PAT L3-004. 肿瘤诊断 (BFS)
来源:互联网 发布:unity3d 模型下载 编辑:程序博客网 时间:2024/06/07 07:28
L3-004. 肿瘤诊断
时间限制
400 ms
内存限制
65536 kB
代码长度限制
8000 B
判题程序
Standard
作者
陈越
在诊断肿瘤疾病时,计算肿瘤体积是很重要的一环。给定病灶扫描切片中标注出的疑似肿瘤区域,请你计算肿瘤的体积。
输入格式:
输入第一行给出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 21 1 1 11 1 1 11 1 1 10 0 1 10 0 1 10 0 1 11 0 1 10 1 0 00 0 0 01 0 1 10 0 0 00 0 0 00 0 0 10 0 0 11 0 0 0输出样例:
26
解题思路:
三维的搜索,建图的时候不要用int,会爆内存,然后就是用深搜的话地图太大,有两组会爆栈,所以写个广搜就能过了
代码:
#include <bits/stdc++.h>using namespace std;bool a[1300][130][70];char book[1300][130][70];int dx[20]={-1, 0, 1, 0, 0, 0};int dy[20]={ 0, 1, 0, -1, 0, 0};int dz[20]={ 0, 0, 0, 0, 1, -1};int cnt;int m, n, l, t;int num;int top;struct p{ int x; int y; int z;}que[1300*130*60];int bfs(int x, int y, int z){ int head, tail; head=tail=0; que[tail].x=x; que[tail].y=y; que[tail].z=z; tail++; book[x][y][z]=1; int i, xx, yy, zz, xi, yi, zi; while(head<tail) { xi=que[head].x; yi=que[head].y; zi=que[head].z; for(i=0; i<6; i++) { xx=xi+dx[i]; yy=yi+dy[i]; zz=zi+dz[i]; if( a[xx][yy][zz] && book[xx][yy][zz]==0) { que[tail].x=xx; que[tail].y=yy; que[tail].z=zz; book[xx][yy][zz]=1; tail++; } } head++; } return head;}int main(){ int k, i, j; cin>>m>>n>>l>>t; memset(book, -1, sizeof book); for(k=1; k<=l; k++) { for(i=1; i<=m; i++) { for(j=1; j<=n; j++) { scanf("%d", &a[i][j][k]); book[i][j][k]=0; } } } cnt=1; int ans=0; for(k=1; k<=l; k++) { for(i=1; i<=m; i++) { for(j=1; j<=n; j++) { if(a[i][j][k] && book[i][j][k]==0) { num=bfs(i, j, k); if(num>=t){// printf("%d\n", num); ans+=num; } } } } } printf("%d\n", ans); }
0 0
- PAT L3-004. 肿瘤诊断 (BFS)
- L3-004. 肿瘤诊断
- L3-004. 肿瘤诊断
- L3-004. 肿瘤诊断
- L3-004. 肿瘤诊断
- L3-004. 肿瘤诊断
- 天梯赛 L3-004. 肿瘤诊断(BFS)
- GPLT L3-004. 肿瘤诊断【三维bfs求连通块】
- 【题解】PAT.团体程序设计天梯赛.L3-004.肿瘤诊断
- 肿瘤诊断 L3-004
- 团体程序设计天梯赛-练习集-L3-004. 肿瘤诊断(三维bfs)
- L3-004. 肿瘤诊断-PAT团体程序设计天梯赛GPLT(广度优先搜索)
- PAT天梯赛练习题——L3-004. 肿瘤诊断(三维连通块并查集)
- L3-004. 肿瘤诊断 天梯赛模拟题
- 团体程序设计天梯赛-L3-004. 肿瘤诊断
- 天梯赛-L3-004. 肿瘤诊断(三维空间+广搜)
- 肿瘤诊断(三维BFS)
- 肿瘤诊断(PAT)
- @RequestMapping注解
- SuperMap iObjects .NET加载dll动态库失败,控件不能用常见问题解析
- Android 权限说明
- 顺序循环队列
- Wiggle Subsequence
- PAT L3-004. 肿瘤诊断 (BFS)
- eclipse中调试flex(针对javaweb工程中嵌入FLEX页面)
- Java中synchronized 修饰在 static方法和 非static方法的区别
- Linux-七种运行级别
- 物流管理系统
- 解决手机页面overflow scroll滑动很卡的问题
- UITableView reloadData后,cellForRowAtIndex方法未调用问题
- 调用高德地图api 实现地址解析
- 【Oracle】Having关键字的使用,删除重复数据但保留一条