思路:暴力搜尋+剪枝。
1.如何快速判斷兩個點之間是否隔著其他點?
二維陣列打表即可,g[x][y]表示x和y之間隔著的點,如果沒有則置為0。
**:
void init()
2.剪枝
如果某條邊(x,y)的兩個端點都被訪問過,但是邊(x, y)和(y, x)都沒有被訪問,那麼後面也不可能訪問到這條邊,那麼剪枝。
#include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std;
#pragma comment(linker, "/stack:1024000000,1024000000")
#define eps 1e-10
#define inf 0x3f3f3f3f
#define pi pairtypedef long long ll;
const int maxn = 10 + 5;
int vis[maxn], ans, n, g[maxn][maxn], e[maxn][maxn];
struct edgea[maxn];
void init()
void dfs(int u, int cnt)
int flag = 1;
for(int i = 0; i < n; ++i)
} if(flag && cnt >= 4) ans++;
for(int i = 1; i <= 9; ++i) }}
int main()
printf("%d\n", ans);
} return 0;
}
如有不當之處歡迎指出!
藍橋杯模擬賽 滑動解鎖
參考了這位大牛 題目 滑動解鎖 滑動解鎖是智慧型手機一項常用的功能。你需要在3x3的點陣上,從任意乙個點開始,反覆移動到乙個尚未經過的 相鄰 的點。這些劃過的點所組成的有向折線,如果與預設的折線在圖案 方向上都一致,那麼手機將解鎖。所謂兩個點 相鄰 當且僅當以這兩個點為端點的線段上不存在尚未經過的點...
2017藍橋杯模擬題 滑動解鎖(暴力DFS)
滑動解鎖是智慧型手機一項常用的功能。你需要在3x3的點陣上,從任意乙個點開始,反覆移動到乙個尚未經過的 相鄰 的點。這些劃過的點所組成的有向折線,如果與預設的折線在圖案 方向上都一致,那麼手機將解鎖。所謂兩個點 相鄰 當且僅當以這兩個點為端點的線段上不存在尚未經過的點。此外,許多手機都約定 這條折線...
藍橋杯校內模擬賽
1200000有多少個約數 只計算正約數 include using namespace std intmain if i i n ans 1 printf d ans 96 在計算機儲存中,15.125gb是多少mb?include using namespace std intmain 在1至2...