zoj 1002解题报告
2012-05-18 23:23
387 查看
第一道dfs,值得纪念
#include <stdio.h> const int max=5; char map[max][max]; int visit[max][max]; int count,k,maxn,n; int judge(int x,int y) { int i,j; for(i=x,j=y-1;j>=0;j--) { if(visit[i][j]==1) return 0; else if(map[i][j]=='X') break; } for(j=y,i=x-1;i>=0;i--) { if(visit[i][j]==1) return 0; else if(map[i][j]=='X') break; } return 1; } void dfs(int k,int count) { int xn,yn; if(k==n*n) { if(count>maxn) { maxn=count; } return; } else { xn=k/n; yn=k%n; if(visit[xn][yn]==0&&judge(xn,yn)&&map[xn][yn]=='.') { count++; visit[xn][yn]=1; dfs(k+1,count); visit[xn][yn]=0; count--; } dfs(k+1,count); } } int main() { int i,j; while(scanf("%d",&n)==1) { if(n==0) break; count=0; k=0; maxn=0; for(i=0;i<n;i++) { getchar(); for(j=0;j<n;j++) { scanf("%c",&map[i][j]); visit[i][j]=0; } } dfs(0,0); printf("%d\n",maxn); } return 0; }
相关文章推荐
- zoj 1002解题报告
- zoj 1002解题报告
- ZOJ1002的解题报告
- zoj1002 深搜题解题报告
- ZOJ 3714 Java Beans 解题报告
- ZOJ 1648 Circuit Board计算几何(解题报告)
- POJ-1002 解题报告
- poj解题报告——1002
- hdu 1002 A + B Problem II 解题报告
- Pku acm 1002 487-3279 排序算法解题报告(一) ----二叉查找数(BST)
- 【cqbzoj1510】 遇见 滚动数组 dp 解题报告
- zoj 3204 Connect them(kruskal算法) 解题报告
- ZOJ 3706 Break Standard Weight 解题报告
- ZOJ 2417解题报告(炫酷)
- ZOJ 3693 Happy Great BG 解题报告
- ZOJ Problem Set - 1711 解题报告
- ZOJ 1111 - Poker Hands 解题报告
- ZOJ 3721 Final Exam Arrangement 解题报告 (贪心)
- ZOJ 3710 Friends 解题报告
- ZOJ 3348 网络流最大流 解题报告