題意:從起始點出發,遇到坑不走,問能夠到達的點有多少個。
思路:板子題。dfs或者bfs都可以
dfs:
#includeusing namespace std;
#define ll long long
#define clr(a) memset(a,0,sizeof(a))
const int maxn = 1e5+10;
const int inf = 0x3f3f3f3f;
const int n = 30;
int n,m,sum;
int vis[n][n];
int dx[4] = ;
int dy[4] = ;
bool check(int x,int y)
else return true;
}void dfs(int x,int y)
else
}}int main(), };
bool check(int x,int y)
struct node;
queueq;
void bfs(int x,int y)}}
}int main(), };
bool check(int x,int y);
int yy[8]=;
void dfs(int a,int b)
for(int i=0;i<8;i++)
}//0是* 1是@ 0 是牆 1是路
int main()
return ;
} //判斷是否是最後乙個數
long long temp=0;
for(int i=id;i題意:判斷圖中,相同顏色是否能成環。
思路:dfs + 標記
#includeusing namespace std;
#define ll long long
#define clr(a) memset(a,0,sizeof(a))
const int maxn = 1e5+10;
const int inf = 0x3f3f3f3f;
const int n = 55;
int n,m,num,fx,fy;
bool vis[n][n];
char mp[n][n];
int flag = 0;
int dir[2][4] = , };
bool check(int x,int y);
int yy[4]=;
char s[110][110];
int ans=0;
struct nodep[3000];//要大於2500,因為這個wa了一遍。
bool cmp(node a,node b)//按 從小到大的順序排序。
void dfs(int a,int b)
}//這個用於s跑dfs,順便記錄一下每個湖泊的位置和大小。(同乙個湖泊只記錄了一次)
void dfs2(int a,int b)
}//這個dfs 用於填充海洋
void dfs1(int a,int b)
int main() , };
struct node;
bool check(int x,int y)
void bfs()
for(int i=0;i<4;i++)}}
}int main()
}getchar();
for(int i=1;i<=n;i++)
getchar();
}cout<<"board #"int dfs(int m,int n)
int main(void)
return 0;
}
思路:bfs+記錄路徑
#include#include#include#include#includeusing namespace std;
const int max = 1e6+10;
const int inf = 0x3fffffff;
int way[15][15];
int vis[15][15];
struct nodep[210];
int dir[4][2]=;
void bfs(int x,int y)
} }}void print(node a,node b)
} return ;
}int main()
} bfs(1,1);
node pre;
node last;
pre.x=1;pre.y=1;
last.x=5;last.y=5;
print(pre,last);
printf("(4, 4)\n");
return 0;
}
油田(bfs專題)
地質勘探局地質勘探局負責探測地下油層。geosurvcomp每次處理乙個大的矩形區域,並建立乙個網格,將土地劃分為許多方形地塊。然後分別分析每個地塊,使用感測裝置來確定該地塊是否含有石油。一塊含有石油的土地叫做口袋。如果兩個油藏相鄰,則它們屬於同一油層。石油蘊藏量可能相當大,可能包含許多小塊。你的工...
搜尋專題(複習)
bfs採用結構體寫的話怎麼剪枝都超時,採用int型的話可以過,沒弄懂 出了問題 ac include include include include using namespace std int visit 100005 int main if t 0 visit t 1 if t m visit...
DFS和BFS演算法
本質區別 bfs 的重點在於佇列,而 dfs 的重點在於遞迴。這是它們的本質區別。dfs 演算法 是一種利用遞迴 實質上是用棧來儲存未訪問的結點,先進後出 實現的搜尋演算法,直到找到解或走不下去為止。簡單來說,其搜尋過程和 不撞南牆不回頭 樹的先序遍歷 類似。bfs演算法 是一種利用佇列 用佇列來儲...