PAT天梯賽L3 004 腫瘤診斷

2022-05-09 01:09:11 字數 1484 閱讀 9741

在診斷腫瘤疾病時,計算腫瘤體積是很重要的一環。給定病灶掃瞄切片中標註出的疑似腫瘤區域,請你計算腫瘤的體積。

輸入格式:

輸入第一行給出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#include#include#include#include#include#include#includeusing namespace std;

const int max = 1010;

const int inf = 0x3f3f3f;

bool arr[1300][130][80];//bool型別 不會超記憶體

bool vis[1300][130][80];

int x[6] = ;//訪問周圍的陣列

int y[6] = ;

int z[6] = ;

int n, m, l, t;

struct node

node(int _x, int _y, int _z):x(_x), y(_y), z(_z) {}

};bool judge(int x, int y, int z)

int bfs(int x, int y, int z)

} }return ans >= t ? ans : 0; // 滿足閾值 就返回

}int main()

} }int sum = 0;

for(int i = 0; i < l; i++)

}} }

cout << sum;

return 0;

}

L3 004 腫瘤診斷

在診斷腫瘤疾病時,計算腫瘤體積是很重要的一環。給定病灶掃瞄切片中標註出的疑似腫瘤區域,請你計算腫瘤的體積。輸入格式 輸入第一行給出4個正整數 m n l t,其中m和n是每張切片的尺寸 即每張切片是乙個m n的畫素矩陣。最大解析度是1286 128 l 60 是切片的張數 t是乙個整數閾值 若疑似腫...

L3 004 腫瘤診斷

在診斷腫瘤疾病時,計算腫瘤體積是很重要的一環。給定病灶掃瞄切片中標註出的疑似腫瘤區域,請你計算腫瘤的體積。輸入格式 輸入第一行給出4個正整數 m n l t,其中m和n是每張切片的尺寸 即每張切片是乙個m n的畫素矩陣。最大解析度是1286 128 l 60 是切片的張數 t是乙個整數閾值 若疑似腫...

L3 004 腫瘤診斷

時間限制 400 ms 記憶體限制 65536 kb 長度限制 8000 b 判題程式 standard 作者 陳越 在診斷腫瘤疾病時,計算腫瘤體積是很重要的一環。給定病灶掃瞄切片中標註出的疑似腫瘤區域,請你計算腫瘤的體積。輸入格式 輸入第一行給出4個正整數 m n l t,其中m和n是每張切片的尺...