PAT-B 1068 萬綠叢中一點紅【對映+陣列】
PAT-B 1068 萬綠叢中一點紅
https://pintia.cn/problem-sets/994805260223102976/problems/994805265579229184
題目
對於計算機而言,顏色不過是畫素點對應的一個 24 位的數值。現給定一幅解析度為 M×N 的畫,要求你找出萬綠叢中的一點紅,即有獨一無二顏色的那個畫素點,並且該點的顏色與其周圍 8 個相鄰畫素的顏色差充分大。
輸入
輸入第一行給出三個正整數,分別是 M 和 N(≤ 1000),即影象的解析度;以及 TOL,是所求畫素點與相鄰點的顏色差閾值,色差超過 TOL 的點才被考慮。隨後 N 行,每行給出 M 個畫素的顏色值,範圍在 [0,224) 內。所有同行數字間用空格或 TAB 分開。
輸出
在一行中按照 (x, y): color
的格式輸出所求畫素點的位置以及顏色值,其中位置 x
和 y
分別是該畫素在影象矩陣中的列、行編號(從 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
分析
1、顏色要唯一。2、陣列外圍也要考慮。3、x表示列,y表示行。具體看程式
C++程式
#include<iostream>
#include<cmath>
#include<map>
using namespace std;
const int N=1005;
int a[N][N];
int dir[8][2]={{-1,-1},{-1,0},{-1,1},{0,-1},{0,1},{1,-1},{1,0},{1,1}};//8個方向
map<int,int>d;//d[i]=j表示顏色為i的畫素點的個數為j
int main()
{
int n,m,tol;
scanf("%d%d%d",&m,&n,&tol);
for(int i=0;i<n;i++)
for(int j=0;j<m;j++)
{
scanf("%d",&a[i][j]);
d[a[i][j]]++;//顏色為a[i][j]的畫素點的個數加一
}
int num=0,x=0,y=0;
for(int i=0;i<n;i++)
for(int j=0;j<m;j++)
{
if(d[a[i][j]]==1)//保證這種顏色是獨一無二的
{
bool flag=true;
for(int k=0;k<8;k++)//周圍8個畫素點
{
int fx=i+dir[k][0];
int fy=j+dir[k][1];
if(0<=fx&&fx<n&&0<=fy&&fy<m&&abs(a[i][j]-a[fx][fy])<=tol)
{
flag=false;
break;
}
}
if(flag)
{
num++;
x=i;
y=j;
}
}
}
if(num==0)
printf("Not Exist\n");
else if(num==1)
printf("(%d, %d): %d\n",y+1,x+1,a[x][y]);//注意需要先輸出y+1,再輸出x+1
else
printf("Not Unique\n");
return 0;
}
相關文章
- CoffeeScript攻略4.7:對映陣列陣列
- 如何高效的處理陣列對映陣列
- PAT-B 1042 字元統計 【對映】字元
- Go 語言基礎 陣列、切片、對映Go陣列
- PAT-B 1066 影象過濾【陣列】陣列
- 紅綠燈
- PAT-B 1083 是否存在相等的差【陣列】陣列
- PAT-B 1092 最好吃的月餅【陣列】陣列
- mybatis中一對多對映,但兩張表id相同怎麼辦?MyBatis
- PAT-B 1019 數字黑洞【陣列+模擬】陣列
- 使用 MapStruct 對映列舉Struct
- 紅綠燈?——CSS 動畫CSS動畫
- scala陣列與java陣列對比陣列Java
- PAT-B 1005 繼續(3n+1)猜想【陣列】陣列
- javascript中一維和二維陣列初始化JavaScript陣列
- 對陣列的操作陣列
- Hibernate【對映】知識要點
- 陣列filter方法對陣列元素進行過濾陣列Filter
- JavaScript中對陣列和陣列API的認識JavaScript陣列API
- 將字串陣列轉換為浮點數陣列字串陣列
- JavaScript向陣列中一次性追加多個元素JavaScript陣列
- 刪除陣列中一個或者多個連續的元素陣列
- 陣列中的逆序對陣列
- JavaScript 陣列方法對比JavaScript陣列
- 給出分數陣列,得到對應的名次陣列陣列
- 紅寶書總結-js陣列的相關方法JS陣列
- 徹底搞清C/C++中一維陣列,二維陣列,指標,陣列指標和指標陣列以及指向指標的指標,行地址和列地址之間的關係C++陣列指標
- PAT-B 1008 陣列元素迴圈右移問題【簡單模擬】陣列
- 樹狀陣列和逆序對陣列
- PostgreSQL 對陣列元素聚合(qbit)SQL陣列
- JavaScript中對陣列的操作JavaScript陣列
- Spring Data JDBC: 對映無ID列的表SpringJDBC
- 萬字解析XML配置對映為BeanDefinition的原始碼XMLBean原始碼
- 【javascript】一個可以配置的紅綠燈JavaScript
- js陣列迴圈方法對比JS陣列
- Java陣列轉列表方式對比Java陣列
- 陣列與方法的呼叫(重點)陣列
- 二維陣列傳參要點陣列