對於計算機而言,顏色不過是畫素點對應的乙個 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:
8 6 200
0 0 0 0 0 0 0 0
65280 65280 65280 16711479 65280 65280 65280 65280
16711479 65280 65280 65280 16711680 65280 65280 65280
65280 65280 65280 65280 65280 65280 165280 165280
65280 65280 16777015 65280 65280 165280 65480 165280
16777215 16777215 16777215 16777215 16777215 16777215 16777215 16777215
輸出樣例 1:
(5, 3): 16711680
輸入樣例 2:
4 5 2
0 0 0 0
0 0 3 0
0 0 0 0
0 5 0 0
0 0 0 0
輸出樣例 2:
not unique
輸入樣例 3:
3 3 5
1 2 3
3 4 5
5 6 7
輸出樣例 3:
not exist
這個題還是蠻坑的,讀題不仔細就會被坑。
1:差值是絕對值差值,如果不考慮絕對值,測試點3過不了。
2:滿足要求的點不僅與周圍的點差值大於tol,而且還必須在整個陣列中唯一。
3:我看別人**時發現,他們的編譯器竟然可以動態定義陣列
int n,m;
cin>>n>>m;
int a[n][m]
我拿著去pat提交竟然一點毛病都沒有,嚶嚶,我vs竟然不可以。。。。
最開始我是想著,與周圍8個點差值大於tol,那肯定不是周圍邊上的嘛,所以就是直接判斷的除去陣列外層的元素,後來發現測試點3.5過不了
由此可見,測試點3是所求值在外層,且至少有1個差值為負的「紅」點。
而測試點5是普通測試,但所求元素在外層的測試點。
附**如下:
#include#include#includeusing namespace std;
int main()
for (int i = 0; i < n; i++)
} int tmp, count = 0;
for (int i = 0; i < n; i++)
1068 萬綠叢中一點紅 (20 分)
1068 萬綠叢中一點紅 (20 分)
1068 萬綠叢中一點紅 20 分 對於計算機而言,顏色不過是畫素點對應的乙個 24 位的數值。現給定一幅解析度為 m n的畫,要求你找出萬綠叢中的一點紅,即有獨一無二顏色的那個畫素點,並且該點的顏色與其周圍 8 個相鄰畫素的顏色差充分大。輸入第一行給出三個正整數,分別是 m 和 n 1000 即影...
1068 萬綠叢中一點紅 20 分
對於計算機而言,顏色不過是畫素點對應的乙個 24 位的數值。現給定一幅解析度為 m n 的畫,要求你找出萬綠叢中的一點紅,即有獨一無二顏色的那個畫素點,並且該點的顏色與其周圍 8 個相鄰畫素的顏色差充分大。輸入第一行給出三個正整數,分別是 m 和 n 1000 即影象的解析度 以及 tol,是所求畫...
1068 萬綠叢中一點紅 20 分
對於計算機而言,顏色不過是畫素點對應的乙個 24 位的數值。現給定一幅解析度為 m n 的畫,要求你找出萬綠叢中的一點紅,即有獨一無二顏色的那個畫素點,並且該點的顏色與其周圍 8 個相鄰畫素的顏色差充分大。輸入格式 輸入第一行給出三個正整數,分別是 m 和 n 1000 即影象的解析度 以及 tol...