博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
PAT Acute Stroke (30)
阅读量:5874 次
发布时间:2019-06-19

本文共 2626 字,大约阅读时间需要 8 分钟。

题目描述

One important factor to identify acute stroke (急性脑卒中) is the volume of the stroke core.  Given the results of image analysis in which the core regions are identified in each MRI slice, your job is to calculate the volume of the stroke core.

 

输入描述:

Each input file contains one test case.  For each case, the first line contains 4 positive integers: M, N, L and T, where M and N are the sizes of each slice (i.e. pixels of a slice are in an M by N matrix, and the maximum resolution is 1286 by 128); L (<=60) is the number of slices of a brain; and T is the integer threshold (i.e. if the volume of a connected core is less than T, then that core must not be counted). Then L slices are given.  Each slice is represented by an M by N matrix of 0's and 1's, where 1 represents a pixel of stroke, and 0 means normal.  Since the thickness of a slice is a constant, we only have to count the number of 1's to obtain the volume.  However, there might be several separated core regions in a brain, and only those with their volumes no less than T are counted. Two pixels are "connected" and hence belong to the same region if they share a common side, as shown by Figure 1 where all the 6 red pixels are connected to the blue one.
Figure 1

输出描述:

For each case, output in a line the total volume of the stroke core.

 

输入例子:

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 题目描述的不清晰,看了好半天都没看懂? 大意是一个M*N*L的点阵,三维点阵,每个点取值0或者1,每个取值为1的点和最近的6个点中取值为1的点连通(上下前后左右) 忽略1的个数小于T的连通子图,然后把其余的连通子图的1的个数相加,最后输出相加结果。 所以用广度优先就可以解决了。
////  Acute Stroke (30).cpp//  PAT_test////  Created by 彭威 on 15/8/6.//  Copyright © 2015年 biophy.nju.edu.cn. All rights reserved.//#include 
#include
#include
using namespace std;vector
>> Q;vector
>> V;struct xyz { int a[3]; xyz(int i,int j,int k){ a[0]=i; a[1]=j; a[2]=k; } bool valid(){ return (!V[a[0]][a[1]][a[2]] && Q[a[0]][a[1]][a[2]]); }};vector
validNeighbor(xyz p){ xyz temp(p); vector
re; for (int i=0; i<3; i++) { temp.a[i]+=1; if (temp.valid()) { re.push_back(temp); } temp.a[i]-=2; if (temp.valid()) { re.push_back(temp); } temp.a[i]+=1; } return re;}int BFS(int i,int j,int k){ queue
q; int m=0; xyz p(i, j, k); V[p.a[0]][p.a[1]][p.a[2]]=true; q.push(p); while (!q.empty()) { xyz p = q.front(); q.pop(); ++m; vector
x=validNeighbor(p); for (int i=0; i
>M>>N>>L>>T; Q.resize(L+2); V.resize(L+2); for (int i=0; i
>Q[i][j][k]; } } } for (int i=1; i

 

 

转载于:https://www.cnblogs.com/weierpeng/p/4709401.html

你可能感兴趣的文章
nginx+php的使用
查看>>
在 ASP.NET MVC 中使用异步控制器
查看>>
SQL语句的执行过程
查看>>
Silverlight开发历程—动画(线性动画)
查看>>
详解Linux中Load average负载
查看>>
HTTP 协议 Cache-Control 头——性能啊~~~
查看>>
丢包补偿技术概述
查看>>
PHP遍历文件夹及子文件夹所有文件
查看>>
WinForm程序中两份mdf文件问题的解决
查看>>
【转】唯快不破:创业公司如何高效的进行产品研发管理
查看>>
Spark RDD、DataFrame原理及操作详解
查看>>
程序计数器、反汇编工具
查看>>
Android N: jack server failed
查看>>
007-Shell test 命令,[],[[]]
查看>>
关于Linux系统使用遇到的问题-1:vi 打开只读(readonly)文件如何退出保存?
查看>>
pandas 按照某一列进行排序
查看>>
在WPF中如何使用RelativeSource绑定
查看>>
Map的深浅拷贝的探究
查看>>
XSLT语法 在.net中使用XSLT转换xml文档示例
查看>>
如何将lotus 通讯簿导入到outlook 2003中
查看>>