poj 2157 Maze 列舉排列 dfs搜迷宮

2021-07-05 05:56:09 字數 808 閱讀 2643

題意:

給乙個迷宮,求是否可從s走到g,迷宮中有門和鑰匙,要獲得相應種類的所有鑰匙才能開啟該種門(比如獲得所有a才能開啟a)。

分析:列舉開啟門的順序,搜路徑即可。

**://poj 2157

//sep9

#include#includeusing namespace std;

const int maxn=32;

char maze[maxn][maxn];

char g[maxn][maxn];

char order[6];

int key_num[256];

int n,m,start_i,start_j;

int vis[maxn][maxn];

int key_cnt;

void dfs(int i,int j,char ch)

{ if(vis[i][j]==1)

return ;

if(g[i][j]>='a'&&g[i][j]<='z'&&g[i][j]!='s') return ;

vis[i][j]=1;

if(g[i][j]==ch) ++key_cnt;

if(j>0) dfs(i,j-1,ch);

if(j0) dfs(i-1,j,ch);

if(i='a'&&g[i][j]<='z'&&g[i][j]!='s') return false;

if(j>0&&find_path(i,j-1)) return true;

if(j0&&find_path(i-1,j)) return true;

if(i

POJ 2157 Maze 解題報告

題目大意是給你一張n m的迷宮,大寫字母a e代表的是門,小寫字母a e對應的是其大寫字母門的鑰匙,如果一扇門在一張圖里有多個鑰匙,那麼必須都找到這些鑰匙才能開啟這扇門,x代表是牆壁,代表此處為空可以行走,詢問是否可以從s走到g。剛開始思路想錯了,想著乙個點最多被訪問4次,然後就自信的寫完了,手出了...

POJ 1018 列舉 貪心

題意 有n件商品,每件商品有m個製造商,每個製造商製造的商品有不同的 頻寬和 每件商品必須選乙個製造商,最後的頻寬是所有頻寬中的最小值,價值是所有商品的總 目的是使b p最大,輸出最大的b p的值。思路 由於資料範圍比較小,所以可以列舉。可以求出所有製造商的商品的最大頻寬和最小頻寬,然後列舉在兩者之...

poj 2002 列舉 雜湊

給定n個點,求出這些點一共可以構成多少個正方形。sample input 4 1 00 1 1 10 0 90 0 1 02 0 0 21 2 2 20 1 1 12 1 4 2 5 3 70 0 5 20sample output 1 61可列方程 可以得出 知道兩點求出其餘兩點 x3 node ...