UVA 679車的擺放 DFS

2021-07-25 10:47:00 字數 837 閱讀 3060

## 這是一道簡單的深度優先搜尋問題##
附上題目鏈結

這道題跟八皇后問題類似,思路大致為:把棋盤的每一格視作乙個狀態,符合要求就擺放,不符合就進入下一狀態,到達最後一格就開始回溯,直至走完每乙個狀態,由於是每一次都走到最後一格,符合深度優先搜尋的思路。

附上ac**:

#include

#include

#include

#include

#include

using

namespace

std;

int vis[4][4];//儲存狀態,1為放置,0為不放

char bor[4][4];//儲存棋盤狀態

int n, maxn;

/*判斷該格是否能放置車*/

bool judge(int x, int y)

for (int i = x-1; i >= 0; i--)

for (int i = y+1; i < n; i++)

for (int i = y-1; i >= 0; i--)

return flag;

}void dfs(int cur, int cnt)

if (judge(cur/n, cur%n))

else dfs(cur+1, cnt);

}int main()

cout

<0;

memset(bor, 0, sizeof(bor));

}return

0;}

小球下落 UVa 679

問題描述 有一棵二叉樹,最大深度為d,且所有葉子的深度都相同。所有結點從上到下從左到右編號為1,2,3,2d 1。在結點1處放乙個小球,它會往下落。每個內結點上都有乙個開關,初始全部關閉,當每次有小球落到乙個開關上時,狀態都會改變。當小球到達乙個內結點時,如果該結點上的開關關閉,則往左走,否則往右走...

UVa679 小球下落(樹)

給下落的深度和小球個數,小球依次下落,結點有個開關,每到乙個結點,開關關向左,開向右 一開始想到了簡單模擬,結果超時 include include include define maxn 20 using namespace std int s 1 printf d n now 2 return ...

23 小球下落(UVa679)

有一棵二叉樹,最大深度為d,且所有的葉子深度都相同。所有結點從上到下從左到右編號為1,2 3,2d 11,2,3,2 d 1 1,2,3,2d 1。在結點1處放乙個小球,它會往下落。每個結點上都有乙個開關,初始全部關閉,當每次有小球落到乙個開關上時,它的狀態都會改變。當小球到達乙個內結點時,如果該結...