1 solutions
-
0
C++ :
#include <iostream> using namespace std; bool chess[10][10]; bool col[10]; int status; int n, k; int DFS(int row, int num) { int i; if (num == k) { status++; return 0; } if (row > n) return 0; for (i = 1; i <= n; i++) { if (chess[row][i] && !col[i]){ col[i] = true; DFS(row + 1, num + 1); col[i] = false; } } DFS(row + 1, num); return 0; } int main() { int i, j; char temp; while (cin >> n >> k) { if (n == -1 && k == -1) break; for (i = 0; i < 10; i++) for (j = 0; j < 10; j++) chess[i][j] = false; for (i = 0; i < 10; i++) col[i] = false; status = 0; for (i = 1; i <= n; i++) for (j = 1; j <=n; j++) { cin >> temp; if (temp == '#') { chess[i][j] = true; } } DFS(1, 0); cout << status << endl; } return 0; }
- 1
Information
- ID
- 18267
- Time
- 1000ms
- Memory
- 128MiB
- Difficulty
- (None)
- Tags
- # Submissions
- 0
- Accepted
- 0
- Uploaded By