藍橋杯dfs搜尋專題

2022-03-06 19:42:39 字數 1723 閱讀 5731

#includeusing namespace std;

/*dfs(i) 第i個雷射機器 有兩種選擇:vis[i-1] == 0 時 可選,無論vis[i-1]為何值都不選

vis[i] 回溯標記是否用過

*/ int n = 30;

int vis[35];

int ans = 0;

int dp[35];

void dfs(int x)

dfs(x+1); //這個點不開雷射

if(vis[x-1] == 0)

}int main()

}return true;

}bool check2()

} }for(int i=1;i<=n-1;i++)

} }return true;

}bool check()

} }for(int i=1;i<=n-1;i++)

} return true;

}void dfs(int x,int y)

it++;

} int t = 0;

for(int i=0;i

#includeusing namespace std;

/*分成幾組? k組 1 ~ 10;

每組:dfs搜尋0~9這幾個沒用過的數;

if 完全平方數

1.x+1

2.繼續加值 (0不能作為第乙個數 單獨考慮)

到了k組 先對結果排序存到vector陣列中 再set去重(因為遞迴回溯 結果有大量重複)

注意:必須用long long...用int會出錯 因為int的取值範圍為:-2147483648 ~ 2147483647

*/ typedef long long ll;

int vis[15];

ll a[15];

vectorv;

int vis2[10];

int k;

int ans = 0;

set> se;

inline bool check(ll x)

double d = sqrt(x);

return d == (ll)d;

}//因為遞迴回溯有大量重複 改成set去重

void dfs(int x,ll cur)

for(int i=0;i

#includeusing namespace std;

int n = 47 + 46 + 61;//邊長

int a[19] = ;

int g[500][500];//大正方形地圖

int vis[30];

setse;//集合儲存正方形最後一行邊長資料結果

void fill(int x,int y,int l,int num) }}

bool ok(int x,int y,int l)

} return true;

}bool check()

void dfs(int x,int y)

} return;

} if(g[x][y] != 0 )elseelse

vis[i] = 0;//回溯

fill(x,y,a[i],0);//填充正方形成0 以(x,y)為左上頂點

}else

}} }

}int main()

return 0;

} //30 33 41 50

藍橋杯 方塊填數 DFS搜尋

數獨 是當下炙手可熱的智力遊戲。一般認為它的起源是 拉丁方塊 是大數學家尤拉於1783年發明的。如圖 1.jpg 所示 6x6的小格被分為6個部分 圖中用不同的顏色區分 每個部分含有6個小格 以下也稱為分組 開始的時候,某些小格中已經填寫了字母 abcdef之一 需要在所有剩下的小格中補填字母。全部...

藍橋杯 幻方填空 dfs 窮竭搜尋

全排列,暴力check 用手生敲,畢竟搞對映 量也少不到 去 配合草稿紙畫就完事了 打個純暴力可能也就10min 但是能騙出一道填空題 qaq也許搜尋會寫得更優美 然而 然而考場還是時間要緊叭 騙分主義.jpg include include include includeusing namespa...

藍橋杯 地宮取寶 (DFS 記憶化搜尋)

歷屆試題 地宮取寶 時間限制 1.0s 記憶體限制 256.0mb 問題描述 x 國王有乙個地宮寶庫。是 n x m 個格仔的矩陣。每個格仔放一件寶貝。每個寶貝貼著價值標籤。地宮的入口在左上角,出口在右下角。小明被帶到地宮的入口,國王要求他只能向右或向下行走。走過某個格仔時,如果那個格仔中的寶貝價值...