一道简单的搜索,dfs.全程sb,不要熬夜写代码!!!
#include<iostream> #include<cstdio> #include<cstring> using namespace std; long long cnt; char a[10][10]; int n , t, visit[10]; void dfs(int r, int num) { if(num == t) { cnt++; return; } for(int i = r; i <= n; i++) { for(int j = 1; j <= n; j++) { if(a[i][j] == '#' && !visit[j]) { visit[j] = 1; dfs(i+1, num+1); // 这里吧i+1 写成r + 1 ,一直没检查出来,到处改; visit[j] = 0; } } } return; } int main() { while(cin >> n >> t) { if(n == -1 &&t == -1) break; cnt = 0; memset(a, 0, sizeof(a)); memset(visit, 0 , sizeof(visit)); string s; for(int i = 1; i <= n; i++) { for(int j = 1; j <= n; j++) { cin >> a[i][j]; } } dfs(1, 0); cout << cnt << endl; } return 0; }