對於計算機而言,顏色不過是畫素點對應的乙個24位的數值。現給定一幅解析度為mxn的畫,要求你找出萬綠叢中的一點紅,即有獨一無二顏色的那個畫素點,並且該點的顏色與其周圍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
首先這個點必須是唯一的,一開始我用陣列去記錄出現的次數,因為陣列是整數連續的,所以陣列的分配pow(2,24)個int空間,超了;然後用map就行了。
第二,把每個數和周圍的八個數比較就ok了;
#include#include#include#includeusing namespace std;
int main();
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
for(int i=1;i<=n;i++)
} }
if(cnt==0)
cout<<"not exist";
else if(cnt==1)
cout<<"("
cout<<"not unique";
return 0;
}
PAT 1068萬綠叢中一點紅
對於計算機而言,顏色不過是畫素點對應的乙個24位的數值。現給定一幅解析度為mxn的畫,要求你找出萬綠叢中的一點紅,即有獨一無二顏色的那個畫素點,並且該點的顏色與其周圍8個相鄰畫素的顏色差充分大。輸入格式 輸入第一行給出三個正整數,分別是m和n 1000 即影象的解析度 以及tol,是所求畫素點與相鄰...
PAT 1068 萬綠叢中一點紅
1068 萬綠叢中一點紅 20 分 對於計算機而言,顏色不過是畫素點對應的乙個 24 位的數值。現給定一幅解析度為 m n 的畫,要求你找出萬綠叢中的一點紅,即有獨一無二顏色的那個畫素點,並且該點的顏色與其周圍 8 個相鄰畫素的顏色差充分大。輸入第一行給出三個正整數,分別是 m 和 n 1000 即...
PAT 1068 萬綠叢中一點紅 20
對於計算機而言,顏色不過是畫素點對應的乙個24位的數值。現給定一幅解析度為mxn的畫,要求你找出萬綠叢中的一點紅,即有獨一無二顏色的那個畫素點,並且該點的顏色與其周圍8個相鄰畫素的顏色差充分大。輸入格式 輸入第一行給出三個正整數,分別是m和n 1000 即影象的解析度 以及tol,是所求畫素點與相鄰...