pku1321 棋盘问题
2009-02-17 23:28
302 查看
//pku1321 棋盘问题 #include <cstdio> #include <cstring> #define MAX_N 8 typedef unsigned char BYTE; BYTE place[MAX_N][MAX_N]; BYTE nPlace[MAX_N]; long N, K; unsigned long gTotal; BYTE gMark = 0; void dfs(long level=0, long k=0) { long i, j; for (i=level; i<=(N-K+k); i++) { for (j=0; j<nPlace[i]; j++) { if (! (gMark & place[i][j])) { if (k+1 == K) gTotal++; else { gMark |= place[i][j]; dfs(i+1, k+1); gMark &= (~place[i][j]); } } } } } int main() { while (2 == scanf("%ld%ld", &N, &K)) { if (-1==N || -1==K) break; memset(nPlace, 0, N*sizeof(nPlace[0])); gTotal = 0; gMark = 0; long i, j; char buffer[MAX_N+1]; for (i=0; i<N; i++) { scanf("%s", buffer); BYTE val = 1; for (j=0; j<N; j++) { if ('#' == buffer[j]) place[i][ nPlace[i]++ ] = val; val = val << 1; } } if (K <= N) dfs(); printf("%ld/n", gTotal); } return 0; }
相关文章推荐
- pku 1321 棋盘问题 简单DFS
- PKU1321——棋盘问题
- pku 1321 棋盘问题
- pku 1321 棋盘覆盖问题
- pku 1321 棋盘问题 DFS
- pku1321 棋盘问题 依然是DFS
- pku 1321 深搜 棋盘问题 解题报告
- pku 1321 棋盘问题
- poj 1321棋盘问题
- poj 1321 棋盘问题(n行中放任意k行)
- POJ 1321 棋盘问题(DFS)
- POJ1321 棋盘问题
- 棋盘问题 POJ - 1321 (简单DFS搜索)
- POJ 1321:棋盘问题
- Poj 1321 棋盘问题
- poj 1321 棋盘问题 (简单的DFS)
- POJ 1321棋盘问题
- poj&nbsp;1321&nbsp;棋盘问题
- POJ 1321 棋盘问题(状态压缩DP | DFS)
- poj1321 棋盘问题 (dfs)