poj 1321——棋盘问题(DFS)
来源:互联网 发布:seo系统培训 编辑:程序博客网 时间:2024/06/05 07:20
题目地址:http://poj.org/problem?id=1321
解题思路:经典基础的DFS(深搜)题目!初学DFS,于是学习了一下别人的代码...
#include <stdio.h>#include <string.h>#include <stdlib.h>int n,k,chess[9][9],visit[9],status;void DFS(int row,int num) //深搜{int j;if(num==k) //如果已填充的棋子数等于k,则棋子放置方法+1{status++;return ;}if(row>n) //越界return ;for(j=1;j<=n;j++){if(chess[row][j] && !visit[j]) //可以放置且该点未被访问过{visit[j]=1; //标记已访问DFS(row+1,num+1); //已填充的棋子数+1,继续对下一行进行深搜visit[j]=0; //回溯法。回溯后,说明棋子的状态已被记录,当前标记还原}}DFS(row+1,num); //[转]k<n时,row在等于n之前可能已把棋子全部放好,又由于全部棋子放好后的状态在前面的循环中已经被记录过,为处理多余行,当前位置先不放棋子return ;}int main(){int i,j;char c;while(scanf("%d %d",&n,&k),n!=-1,k!=-1){status=0;memset(chess,0,sizeof(chess));memset(visit,0,sizeof(chess));getchar();for(i=1;i<=n;i++){for(j=1;j<=n;j++){scanf("%c",&c);if(c=='#')chess[i][j]=1;}getchar();}DFS(1,0); //row=1,num=0。从第一行开始进行深搜,填充棋子为0printf("%d\n",status);}return 0;}
- poj 1321——棋盘问题(DFS)
- POJ 1321 棋盘问题——dfs
- POJ 1321 棋盘问题(棋盘DFS)
- POJ——1321棋盘问题(DFS+回溯)
- POJ 1321——棋盘问题(DFS)
- poj 1321 — 棋盘问题(简单DFS)
- POJ 1321 棋盘问题 DFS
- POJ 1321 棋盘问题 (dfs)
- poj 1321 -- 棋盘问题 (DFS)
- poj 1321 :棋盘问题 (dfs)
- poj 1321 棋盘问题(DFS)
- POJ 1321 棋盘问题(DFS)
- poj 1321 棋盘问题 【DFS】
- poj 1321 棋盘问题 (dfs)
- 棋盘问题 POJ 1321 DFS
- POJ 1321 棋盘问题 (DFS)
- POJ 1321-棋盘问题(dfs)
- POJ 1321 棋盘问题(DFS)
- mysql的一些语句
- 映射模式
- 通过改进算法来优化程序性能的真实案例(Ransac)
- java学习笔记---异常
- 学习笔记(二)分治排序
- poj 1321——棋盘问题(DFS)
- XE2安装Frmdesign
- Linux/Ubuntu下安装VMWare Tools .
- 读书笔记:MVC在前端中的数据存储于管理部分
- vim+ctags+taglist
- 01.写在开篇
- HDU 1042 N!
- hadoop 如何重新格式化dfs系统
- ActivityGroup的应用以及跳转问题