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

2021-09-12 01:16:47 字數 1776 閱讀 3376

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

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

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

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

(5, 3): 16711680
4 5 2

0 0 0 0

0 0 3 0

0 0 0 0

0 5 0 0

0 0 0 0

not unique
3 3 5

1 2 3

3 4 5

5 6 7

not exist
思路:題目要求符合條件的點必須是唯一的且與周圍灰度值差異均超過給定的tol,可以使用map做雜湊表,輸入時統計畫素出現的次數,然後再次遍歷,統計畫素僅出現了一次且 差異性符合條件的點,最後根據符合條件的點cnt的個數對應輸出。

#include#includeusing namespace std;

int m,n,tol,cnt=0,row=-1,col=-1,a[1010][1010];

int x[10]=;

int y[10]=;

unordered_mapmp; //雜湊表,用於統計該畫素出現次數

bool judge(int i,int j)

int main()

} for(int i=1;i<=n;i++)

} }if(cnt==0) printf("not exist\n");

else if(cnt==1) printf("(%d, %d): %d\n",col,row,a[row][col]);

else printf("not unique\n");

return 0;

}

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,是所求畫...