1068 萬綠叢中一點紅(20 分)
對於計算機而言,顏色不過是畫素點對應的乙個 24 位的數值。現給定一幅解析度為 m×n 的畫,要求你找出萬綠叢中的一點紅,即有獨一無二顏色的那個畫素點,並且該點的顏色與其周圍 8 個相鄰畫素的顏色差充分大。
輸入第一行給出三個正整數,分別是 m 和 n(≤ 1000),即影象的解析度;以及 tol,是所求畫素點與相鄰點的顏色差閾值,色差超過 tol 的點才被考慮。隨後 n 行,每行給出 m 個畫素的顏色值,範圍在 [0,224) 內。所有同行數字間用空格或 tab 分開。
在一行中按照(x, y): color
的格式輸出所求畫素點的位置以及顏色值,其中位置x
和y
分別是該畫素在影象矩陣中的列、行編號(從 1 開始編號)。如果這樣的點不唯一,則輸出not unique
;如果這樣的點不存在,則輸出not exist
。
注意:1.該畫素一定是獨一無二的
2.本題中有一測試例輸入數量很大,所以使用cin時會導致執行超時,解決方法1.加上 ios::sync_with_stdio(false); 關閉cin cout的輸入輸出緩衝區加快輸入輸出效率,2.改用scanf輸入
經測試只用cin 會超時,用scanf會過測試例,使用解決方法1更快
1 #include2 #include3 #include45using
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,是所求畫...