Online Judge | Problem Set | Authors | Online Contests | User | ||||||
---|---|---|---|---|---|---|---|---|---|---|
Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest |
简单#include <iostream> #include <cstring> using namespace std; const int ROW = 10; const int COL = 10; int book[COL]; char chess[ROW][COL]; int step, n; long long sum; void DFS(char chess[][COL], int row,int k) { if (row > n) return; if (k == step) { sum++; return; } for (int j = 1; j <= 2; j++) { if (j == 1) DFS(chess, row + 1, k); //每一行都有两种选择,放或不放 if (j == 2) { for (int i = 0; i < n; i++) { if (book[i] == 0 && chess[row][i] == '#') { book[i] = 1; DFS(chess, row + 1, k + 1); book[i] = 0; } } } } } int main() { while (cin >> n >> step) { sum = 0; cin.get(); if (n == -1 && step == -1) break; for (int i = 0; i < n; i++) cin >> chess[i]; DFS(chess, 0, 0); cout << sum << endl; } } Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator