總時間限制: java
1000ms數組
內存限制: 測試
65536kBcode
描述圖片
在一個正方形的灰度圖片上,腫瘤是一塊矩形的區域,腫瘤的邊緣所在的像素點在圖片中用0表示。其它腫瘤內和腫瘤外的點都用255表示。如今要求你編寫一個程序,計算腫瘤內部的像素點的個數(不包括腫瘤邊緣上的點)。已知腫瘤的邊緣平行於圖像的邊緣。內存
輸入class
只有一個測試樣例。第一行有一個整數n,表示正方形圖像的邊長。其後n行每行有n個整數,取值爲0或255。整數之間用一個空格隔開。已知n不大於1000。import
輸出變量
輸出一行,該行包含一個整數,爲要求的腫瘤內的像素點的個數。程序
樣例輸入
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醫學部計算概論期末考試
import java.util.Scanner; public class OpenJudge2713 { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int n = scanner.nextInt(); int count = 0; for (int i = 0; i < n; i++) { int x = 0; // number of zero int y = 0; // number of continuous 255 between zeros for (int j = 0; j < n; j++) { int temp = scanner.nextInt(); if (temp == 0) { x++; } else if (temp == 255 && x > 0 && x < 2) { y++; } } count += y; } scanner.close(); System.out.println(count); } }
解題思路:
掃描每一行數據, 計算0的個數x, 以及夾在0之間的255的個數y.
把每行的y值累計, 便可獲得腫瘤的面積.