OpenJudge 百練 2713: 腫瘤面積 解題報告

總時間限制: 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值累計, 便可獲得腫瘤的面積.

相關文章
相關標籤/搜索