20200820寫這一道題(01迷宮)花了整整乙個下午,最後在寫**-翻書-思考-看題解-思考-寫**-翻書-思考-看題解-思考這樣乙個迴圈下,終於寫了出來,激動之餘,寫篇部落格記錄下此時的心情以及ac的**。
有乙個僅由數字0與1組成的n×n格迷宮。若你位於一格0上,那麼你可以移動到相鄰4格中的某一格1上,同樣若你位於一格1上,那麼你可以移動到相鄰4格中的某一格0上。
你的任務是:對於給定的迷宮,詢問從某一格開始能移動到多少個格仔(包含自身)。
第1行為兩個正整數n,m。
下面n行,每行n個字元,字元只可能是0或者1,字元之間沒有空格。
接下來m行,每行2個用空格分隔的正整數i,j,對應了迷宮中第i行第j列的乙個格仔,詢問從這一格開始能移動到多少格。
m行,對於每個詢問輸出相應答案。
輸入
2 20110
1 12 2
4所有格仔互相可達。4
對於20%的資料,n≤10;
對於40%的資料,n≤50;
對於50%的資料,m≤5;
對於60%的資料,n≤100,m≤100;
對於100%的資料,n≤1000,m≤100000。
首先是bfs解法:
#include
int n,m,startx,starty,ans;
int a[
1005][
1005
],book[
1005][
1005];
int next[5]
[2]=
,,,,
};int head=
1,tail=1;
struct note
;struct note que[
1000005];
void
bfs(
int x,
int y)
} head++;}
for(
int i=
1;iintmain()
}while
(m--)}
return0;
}
接下來是dfs解法
#include
int n,m,ans[
100002
],sx,sy,book[
1002][
1002];
//ans用來儲存答案,book用來標記
int a[
1002][
1002];
//a用來儲存地圖
int next[5]
[2]=
,,,,
};//四個方向
void
dfs(
int x,
int y,
int z,
int t)}}
intmain()
}for
(int i=
1;i<=m;i++
)else
}for
(int i=
1;i<=m;i++
)printf
("%d\n"
,ans[i]);
return0;
}
這就是寫了整整乙個下午的題目,一開始思路都沒有,接著有思路了,但是超時了三個,後來看提示說明才知道資料很大(這也給了我們乙個啟發,如果參加藍橋杯、ccf等比賽時,不要過了樣例馬上就去提交哦,要看題目給的提示以及檢查自己寫的**是否跟思路一致了),如果每輸入乙個起始座標就重新搜一次肯定會超時。優化**優化了一段時間還是超時三個,接著看題解慢慢得就發覺這是連通塊+著色標記法,還好前一天有學習到,理解起來就沒有那麼困難!!!也有的同學是用並查集做的,但是本萌新還沒有學到,就沒有去了解。及時總結,複習,不然第二天還是會忘記的!!!挑戰自己,讓自己難起來,加油!! MGRE GRE PPP協議綜合運用
1.拿到拓撲圖,我們先看第乙個要求,r5是isp,isp是網路服務運營商,不能被通告進路由協議,所以在配置時,要寫一條靜態預設,指向isp 2.從拓撲圖我們可以看出,在實驗前需要先加2sa板卡,連線成串線 3.在完成前兩步後,開始進行配置,先配置直連路由,配置完成後,在配置各種要求 4.最後使用靜態...
Flutter form表單綜合運用
老規矩,看圖 一 效果圖 以下 複製進main.dart檔案即可執行 二 實現 import package flutter material.dart override widget build buildcontext context class formdemopage extends sta...
L6 11 綜合運用
本單元我們學習了模組知識,學習了常用的模組如 時間模組math,時間模組time和datetime,隨機模組random等,本節課我們將系統的去運用所學知識,完成一些 程式。猜拳又稱為划拳,在面對一些小事情,我們總是通過猜拳來決定。學習了模組後,我們可以模擬和電腦玩剪刀石頭布的遊戲。分析題目 玩家和...