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

2021-10-05 00:25:25 字數 2671 閱讀 3237

題目描述:

對於計算機而言,顏色不過是畫素點對應的乙個 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:

8

620000

0000

0065280

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:

452

0000

0030

0000

0500

0000

輸出樣例 2:

not unique
輸入樣例 3:

335

1233

4556

7

輸出樣例 3:

not exist
我的思路:

首先要理解題意,我們要找的點有以下特徵:

1.獨一無二的,唯一的(用map陣列來進行記錄&判斷)

2.與相鄰的8個點的色差足夠大(用delta陣列來記錄,記得用絕對值)

***具體思路請看**

嘻嘻 小白自己做的,步驟可能看起來會囉嗦一些

我的**:

#include

#include

#include

#include

#include

using

namespace std;

const

int maxn =

1000+10

;int origin[maxn]

[maxn]

;int delta[maxn]

[maxn]

;//記錄與周圍顏色的最小差值,最小差值如果滿足條件,其他差值一定也滿足

vector<

int>answer,x,y;

//分別用於存放 顏色值 行值 列值

map<

int,

int>mp;

intmain()

}int dx[8]

=;int dy[8]

=;for(

int i=

0;i) delta[i]

[j]=

min(delta[i]

[j],

abs(origin[i]

[j]-origin[ni]

[nj]))

;//delta存最小的色差值}}

}for

(int i=

0;i}int len=answer.

size()

;if(len==0)

if(len==1)

if(len>1)

return0;

}

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