題目描述-->p1454 聖誕夜的極光
題意概括:
尋找聯通塊數量,這裡的連通塊定義與其他的不同.
這裡定義為曼哈頓距離不超過2的都屬於乙個聯通塊.
什麼?不知道曼哈頓距離是啥?
曼哈頓距離簡易概括->|x1-x2|+|y1-y2|,兩點之間橫縱座標的差的絕對值之和.
詳細解釋->曼哈頓距離
看到大家都在說12個方向,具體是哪12個方向呢?
假設黃色點為我們當前所在節點.那我們圖中標出的紅色點,都是滿足與黃色點曼哈頓距離為2的點.
但這才有8個方向啊!
回望題意,曼哈頓距離不超過2的都屬於乙個聯通塊
曼哈頓距離不超過2,那我們的圖應該是這樣的↓.
(藍色點即為與黃色點曼哈頓距離為1的.
所以說,現在12個方向就很明確了!
根據標明的座標,我們很容易打出12個方向對應的位置變化. 像這樣↓
const int ax=;
const int ay=;
//const型別可自動識別陣列大小.
//不過貌似不加const也可以識別
然後我們我又遇到了難題,
如何輸入?
字元型別,我們一般選擇用
scanf("%c"),getchar(),cin來進行輸入.
但是這題,用scanf,會出現蜜汁錯誤.(用scanf只get到了30pts...
而用getchar則會讀取行末換行符,需要加判斷.
所以我們直接選用cin來讀入字元.(感覺cin輸入字元還是很少出鍋的.
因此,我們搜到乙個為'#'的位置,就去標記與它在乙個聯通塊中的位置,則聯通塊個數++即可.
ps:
or > ||
and> &&
---------------------**--------------------
#include#define il inline
#define ri register int
il void in(int &x)
while(s>='0' and s<='9')
x*=f;
}int n,m,ans;
char res[108][108];
const int ax=;
const int ay=;
bool vis[108][108];
il void dfs(int x,int y)
}int main()
} printf("%d",ans);
}
P1454 聖誕夜的極光
題目背景 聖誕夜系列 題目描述 聖誕老人回到了北極聖誕區,已經快到12點了。也就是說極光表演要開始了。這裡的極光不是極地特有的自然極光景象。而是聖誕老人主持的人造極光。轟隆隆 烟花響起 來自中國的瀏陽花炮之鄉 接下來就是極光表演了。人造極光其實就是空中的一幅幅n m的點陣影象。只是因為特別明亮而吸引...
Vijos1051 送給聖誕夜的極光
試題請參見 聖誕老人回到了北極聖誕區,已經快到12點了.也就是說極光表演要開始了.這裡的極光不是極地特有的自然極光景象.而是聖誕老人主持的人造極光.轟隆隆 烟花響起 來自中國的瀏陽花炮之鄉 接下來就是極光表演了.人造極光事實上就是空中的一幅幅n m的點陣影象.僅僅是由於特別明亮而吸引了非常多非常多小...
vijos 1051送給聖誕夜的極光
送給聖誕夜的極光 這是一道很水很水的寬搜水題,我主要是覺得自己在搜素這一塊有點生疏於是隨便找了一題練手,找到這麼一道水題,原本以為可以一次過的,但是狀況百出,我並不是很擅長bfs,我以前一直用的 pascal 寫bfs 但是pascal 沒有佇列,所以沒有 c 方便,所以這題我就直接用佇列做了,然後...