PAT 乙級 1068 萬綠叢中一點紅(20 分)

2022-03-21 19:17:53 字數 1374 閱讀 2210

1068 萬綠叢中一點紅(20 分)

對於計算機而言,顏色不過是畫素點對應的乙個 24 位的數值。現給定一幅解析度為 m×n 的畫,要求你找出萬綠叢中的一點紅,即有獨一無二顏色的那個畫素點,並且該點的顏色與其周圍 8 個相鄰畫素的顏色差充分大。

輸入第一行給出三個正整數,分別是 m 和 n(≤ 1000),即影象的解析度;以及 tol,是所求畫素點與相鄰點的顏色差閾值,色差超過 tol 的點才被考慮。隨後 n 行,每行給出 m 個畫素的顏色值,範圍在 [0,2​24​​) 內。所有同行數字間用空格或 tab 分開。

在一行中按照(x, y): color的格式輸出所求畫素點的位置以及顏色值,其中位置xy分別是該畫素在影象矩陣中的列、行編號(從 1 開始編號)。如果這樣的點不唯一,則輸出not unique;如果這樣的點不存在,則輸出not exist

注意:1.該畫素一定是獨一無二的

2.本題中有一測試例輸入數量很大,所以使用cin時會導致執行超時,解決方法1.加上 ios::sync_with_stdio(false);  關閉cin cout的輸入輸出緩衝區加快輸入輸出效率,2.改用scanf輸入

經測試只用cin 會超時,用scanf會過測試例,使用解決方法1更快

1 #include2 #include3 #include4

5using

namespace

std;67

int pixel[1010][1010];8

intcol, row, tol;

9 mapm;

10int index[8][2] = , , , , , , , };

1112

bool judge(int i, int

j)13

2122

return

true;23

}2425int

main()

2639

40for (int i = 1; i <= row; ++i)

41for (int j = 1; j <= col; ++j)

4254

} 55}

5657

if (pointnum == 0

)58 cout << "

not exist

"<59else

if (pointnum == 1

)60 cout << "("

<< y << ", "

<< x << "

): "

<< pixel[x][y] <6162

return0;

63 }

PAT乙級 1068 萬綠叢中一點紅

對於計算機而言,顏色不過是畫素點對應的乙個 24 位的數值。現給定一幅解析度為 m n 的畫,要求你找出萬綠叢中的一點紅,即有獨一無二顏色的那個畫素點,並且該點的顏色與其周圍 8 個相鄰畫素的顏色差充分大。輸入第一行給出三個正整數,分別是 m 和 n 1000 即影象的解析度 以及 tol,是所求畫...

PAT乙級 1068 萬綠叢中一點紅

對於計算機而言,顏色不過是畫素點對應的乙個 24 位的數值。現給定一幅解析度為 m n 的畫,要求你找出萬綠叢中的一點紅,即有獨一無二顏色的那個畫素點,並且該點的顏色與其周圍 8 個相鄰畫素的顏色差充分大。輸入第一行給出三個正整數,分別是 m 和 n 1000 即影象的解析度 以及 tol,是所求畫...

PAT乙級1068 萬綠叢中一點紅

對於計算機而言,顏色不過是畫素點對應的乙個 24 位的數值。現給定一幅解析度為 m n 的畫,要求你找出萬綠叢中的一點紅,即有獨一無二顏色的那個畫素點,並且該點的顏色與其周圍 8 個相鄰畫素的顏色差充分大。輸入第一行給出三個正整數,分別是 m 和 n 1000 即影象的解析度 以及 tol,是所求畫...