| ||||||||||
| 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<stdio.h>
int board[9][9];
unsigned long int search(int k, int l, int n, char state);
int main()
{
int n, k;
while(scanf("%d%d", &n, &k), n != -1)
{
int i, j;
for(i = 1; i <= n; i ++)
{
char tmp[10];
scanf("%s", tmp + 1);
for(j = 1; j <= n; j ++)
if(tmp[j] == '#') board[i][j] = 1;
else board[i][j] = 0;
}
printf("%lu\n", search(k, 1, n, 0xff));
}
return 0;
}
unsigned long int search(int k, int l, int n, char state)
{
int i, j;
unsigned long int sum = 0;
if(k == 0) return 1; /* 棋子无 */
if(k > n - l + 1) return 0; /* 棋盘无 */
for(i = l; i <= n; i ++)
for(j = 1; j <= n; j ++)
if(state & (0x80 >> (j - 1)) && board[i][j])
sum += search(k - 1, i + 1, n, state & ~(0x80 >> (j - 1))); /* 乃格兰!一开始i写成l,半天才看出来 */
return sum;
}
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator