Bailian2713 腫瘤面積【基礎】
阿新 • • 發佈:2019-01-11
2713:腫瘤面積
描述
在一個正方形的灰度圖片上,腫瘤是一塊矩形的區域,腫瘤的邊緣所在的畫素點在圖片中用0表示。其它腫瘤內和腫瘤外的點都用255表示。現在要求你編寫一個程式,計算腫瘤內部的畫素點的個數(不包括腫瘤邊緣上的點)。已知腫瘤的邊緣平行於影象的邊緣。
輸入
只有一個測試樣例。第一行有一個整數n,表示正方形影象的邊長。其後n行每行有n個整數,取值為0或255。整數之間用一個空格隔開。已知n不大於1000。
輸出
輸出一行,該行包含一個整數,為要求的腫瘤內的畫素點的個數。
樣例輸入
5
255 255 255 255 255
255 0 0 0 255
255 0 255 0 255
255 0 0 0 255
255 255 255 255 255
樣例輸出
1
提示
如果使用靜態陣列來表示圖片資料,需要將該陣列定義成全域性變數。
來源
2005~2006醫學部計算概論期末考試
問題連結:Bailian2713 腫瘤面積
問題描述:(略)
問題分析:
這個問題的關鍵是找到左上角和右下角的座標。有了座標的值算一下面積就可以了。所以,沒有必要使用二維陣列!
程式說明:(略)
參考連結:(略)
題記:(略)
AC的C語言程式如下:
/* Bailian2713 腫瘤面積 */ #include <stdio.h> int main(void) { int n, a, i, j; scanf("%d", &n); int xstart = n + 1, xend = 0, ystart = n + 1, yend = 0; for(i = 1; i <= n; i++) for(j = 1; j <= n; j++) { scanf("%d", &a); if(a == 0) { if(i < xstart || j < ystart) { xstart = i; ystart = j; } if(i > xend || j > yend) { xend = i; yend = j; } } } printf("%d\n", (xend - xstart - 1) * (yend - ystart - 1)); return 0; }