藍橋杯演算法練習筆記 9 深搜減枝策略

2021-10-03 19:33:04 字數 1924 閱讀 6756

1.可行性剪枝

2.最優性剪枝

3.重複性剪枝

4.奇偶性剪枝

1.迷宮改

#include

using

namespace std;

const

int n=10;

int n,m,t;

char mat[n]

[n];

char vis[n]

[n];

int dx[4]

=;int dy[4]

=;bool ok;

void

dfs(

int x,

int y,

int t)

vis[x]

[y]=

true

;for

(int i=

0;i<

4;i++

)dfs

(tx,ty,t+1)

;}vis[x]

[y]=

false;}

intmain()

int sx,sy,ex,ey;

for(

int i=

0;i(mat[i]

[j]==

'd')}}

if((sx+sy+ex+ey+t)%2

!=0)else

else

}return0;

}/*樣例輸入:

4 4 5

s.x.

..x.

..xd

....

樣例輸出:

no*/

2.全排列

另:全排列問題設計知識較多,在其他地方進行補充

/*輸入乙個數n,表示從1到n的n個數字共有幾種排列方式,並全部輸出*/

#include

using

namespace std;

int n;

bool vis[20]

;void

dfs(

int cnt,

int num)

for(

int i=

1;i<=n;i++)}

}int

main()

cout<

dfs(0,

0);return0;

}/*樣例輸入:

3樣例輸出:

6123

132213

231312

321*/

3.因數最多的數

題目連線/參考部落格

#include

using

namespace std;

typedef

long

long ll;

ll n,ans;

int mc,prime[15]

=;void

dfs(

int u,

int m,ll x,ll cnt)

//u:用了幾個素數,m:最大幾次方,x:目前值,cnt:因子個數

}int

main()

return0;

}

藍橋杯 基礎練習VIP 2n皇后問題(深搜)

輸出乙個整數,表示總共有多少種放法。樣例輸入 41 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 樣例輸出 2思路 資料量不大,就是暴力搜尋,先安排一種皇后,然後再安排另一種皇后。注意判斷的條件。如下 include define ll long long using namespac...

藍橋杯演算法練習筆記 6 棧和遞迴

0.棧的基本使用 include include using namespace std intmain 1.漢諾塔問題 漢諾塔問題 include include using namespace std 問題分解 1.把 n 1 個盤子移動到b 2.把最大的盤子從a移動到c 3.把b上的n 1個盤...

藍橋杯演算法練習筆記 12 動態規劃模型

1.最大欄位和 最大字段 連續 和 include include using namespace std int n int a 105 int ans 0 voidf1 sum 0 voidf2 else intmain f1 普通寫法,o n2 f2 動態規劃,o n cout cin 6 2...