A310电脑就离谱,明年去北京再战吧
持续更新ing
最后一道填空题:
hp DFS
#include<bits/stdc++.h>
using namespace std;
int N;
bool vis[6][6];
int ans = 0;
int dir[4][2] = {{1, 0}, {-1, 0}, {0, 1}, {0, -1}};
bool check() {
for(int i = 1; i <= N; ++i) {
for(int j = 1; j <= N; ++j) {
if(!vis[i][j]) {
return 0;
}
}
}
return 1;
}
void DFS(int x, int y) {
//cout << x << " " << y << endl;
if(x <= 0 || y <= 0 || x > N || y > N) {
return;
}
if(check()) {
ans++;
return;
}
for(int i = 0; i < 4; ++i) {
int xx = x + dir[i][0];
int yy = y + dir[i][1];
if(!vis[xx][yy]) {
vis[xx][yy] = 1;
DFS(xx, yy);
vis[xx][yy] = 0;
}
}
}
int main () {
while(cin >> N) {
ans = 0;
memset(vis, 0, sizeof vis);
for(int i = 1; i <= N; ++i) {
for(int j = 1; j <= N; ++j) {
memset(vis, 0, sizeof vis);
vis[i][j] = 1;
DFS(i, j);
}
}
cout << ans << endl;
}
}
经验:用notepad配环境或者用命令行直接编译运行(g++ sbA310.cpp -> a.exe)死循环ctrl c终止