百练OJ:3865和2677:肿瘤检测
生活随笔
收集整理的這篇文章主要介紹了
百练OJ:3865和2677:肿瘤检测
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
題目鏈接:腫瘤檢測
描述:一張CT掃描的灰度圖像可以用一個N*N(0<N<100)的矩陣描述,矩陣上的每個點對應一個灰度值(整數),其取值范圍是0-255。我們假設給定的圖像中有且只有一個腫瘤。在圖上監測腫瘤的方法如下:如果某個點對應的灰度值小于等于50,則這個點在腫瘤上,否則不在腫瘤上。我們把在腫瘤上的點的數目加起來,就得到了腫瘤在圖上的面積。任何在腫瘤上的點,如果它是圖像的邊界或者它的上下左右四個相鄰點中至少有一個是非腫瘤上的點,則該點稱為腫瘤的邊界點。腫瘤的邊界點的個數稱為腫瘤的周長。現在給定一個圖像,要求計算其中的腫瘤的面積和周長。
輸入:輸入第一行包含一個正整數N(0<N<100),表示圖像的大小;接下來N行,每行包含圖像的一行。圖像的一行用N個整數表示(所有整數大于等于0,小于等于255),兩個整數之間用一個空格隔開。
輸出:輸出只有一行,該行包含兩個正整數,分別為給定圖像中腫瘤的面積和周長,用一個空格分開。
設計思路:
首先將圖像擴大一圈,目的是為了將圖像的邊界的點的檢測條件與非圖像邊界的點的檢測條件相同,之后對每個點進行檢測,設置計數器,最終輸出結果即可
代碼如下:
#include <iostream>using namespace std;int main()
{int n,c=0,s=0;cin>>n;int lists[n+2][n+2] ;for(int k=0;k<n+2;k++){lists[k][0]=255;lists[0][k]=255;lists[k][n+1]=255;lists[n+1][k]=255;}for(int i=1;i<=n;i++){for(int j=1;j<=n;j++){cin>>lists[i][j];}}for (int i=1;i<=n;i++){for(int j=1;j<=n;j++){if(lists[i][j]<=50){s++;if(lists[i+1][j]>50||lists[i-1][j]>50||lists[i][j+1]>50||lists[i][j-1]>50){c++;}}}}cout <<s<<" "<<c << endl;return 0;
}
總結
以上是生活随笔為你收集整理的百练OJ:3865和2677:肿瘤检测的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 百练OJ:2713:肿瘤面积
- 下一篇: 百练OJ:2800:垂直直方图