棋盘问题(dfs)
2024-08-26 22:44:40
http://poj.org/problem?id=1321
思路:按行搜索,回溯时还原棋盘。
#include <stdio.h>
#include <string.h>
int map[][],vis[];
int ans,n,k;
void dfs(int row,int cnt)
{ if (k==cnt)
{
ans++;
return ;
}
if (row > n)
return ;
for (int i = ; i <= n; i ++)
{
if (map[row][i] && !vis[i])
{
vis[i] = ;
dfs(row+,cnt+);
vis[i] = ;
}
}
dfs(row+,cnt);//处理k<n的情况
return ;
}
int main()
{
while(~scanf("%d%d%*c",&n,&k))
{
if (n==-&&k==-)
break;
char ch;
ans = ;
memset(map,,sizeof(map));
memset(vis,,sizeof(vis));
for (int i = ; i <= n; i ++)
{
for (int j = ; j <= n; j ++)
{
scanf("%c",&ch);
if (ch=='#')
map[i][j] = ;
}
getchar();
}
dfs(,);
printf("%d\n",ans);
}
return ;
}
最新文章
- Java JDK配置环境变量
- 记一次zookeeper集群搭建错误的排除
- 【BZOJ 3295】动态逆序对 - 分块+树状数组
- Codeforces Round #258 (Div. 2)(A,B,C,D)
- Python基础 初识Python
- java基本数据类型传递与引用传递区别
- dc的博客翻修计划启动
- 【easy】110. Balanced Binary Tree判断二叉树是否平衡
- String.split()方法
- linux 常用命令集合-命令导图
- nginx出现 “414 request-uri too large”
- sqlserver导入导出数据库结构及创建用户分配权限
- Tomcat 基础
- JS获取当前网页大小以及屏幕分辨率等
- 数组之reduce()和reduceRight()
- 省队集训 Day3 陈姚班
- BlockTransferService 实现
- netty结合websocket使用
- IDEA 打包jar
- MySQL基础 (麦子学员 php 第二阶段)
热门文章
- Ubuntu用户自定义脚本开机启动
- python os os.path模块学习笔记
- Eclipse安装egit Github教程
- plsql developer连接oracle数据库
- linux强制踢出已登录的用户及本地用户
- ESX/ESXi 主机的某些存储阵列可能存在读取或写入性能问题 (1002598)
- 2977,3110 二叉堆练习1,3——codevs
- (C/C++学习)11.随机数组的快速查找
- 使用redis和简单token机制校验身份的思路
- 02. 爬取get请求的页面数据