#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 個格仔的矩陣。每個格仔放一件寶貝。每個寶貝貼著價值標籤。地宮的入口在左上角,出口在右下角。小明被帶到地宮的入口,國王要求他只能向右或向下行走。走過某個格仔時,如果那個格仔中的寶貝價值...