POJ1321-棋盘问题-(dfs)
2024-09-02 23:29:08
http://poj.org/problem?id=1321
解题:
dfs中,两种情况,某一行摆不摆?某一列摆不摆?
#include<stdio.h>
#include<iostream>
#include<algorithm>
#include<cstring>
#include<math.h>
#include<string>
#include<map>
#include<queue>
#include<stack>
#include<set>
#define ll long long
#define inf 0x3f3f3f3f
using namespace std; char a[][];
int l[];///列
int ans;
int n,k; void dfs(int x,int cnt)
{ if(cnt==k)///摆k个,方案数+1
{
ans++;
return;
}
if(x==n)///行数越界
return; dfs(x+,cnt);///这一行不摆 for(int j=;j<n;j++)///遍历一行,有位置就摆!
{
if( a[x][j]=='#' && l[j]== && cnt<k )///如果有位置摆就摆,没有就不摆。
{
l[j]=;
dfs( x+,cnt+ );///摆完就进入下一行,当前棋子数+1
l[j]=;///这一列不摆
}
}
} int main()
{
while( scanf("%d%d",&n,&k) && n!=- && k!=- )
{
memset(l,,sizeof(l));
memset(a,,sizeof(a));
ans=;
for(int i=;i<n;i++)
scanf("%s",a[i]); dfs(,);///行 棋子数
printf("%d\n",ans);
}
return ;
}
最新文章
- Android消息传递之EventBus 3.0使用详解
- 图解SQL的Join(转)
- 无法识别的属性“targetFramework
- ACM Haffman编码
- Java fundamentals of basic IO
- JSF 2 link, commandLink and outputLink example
- 页面多语系自动切换-.resx
- JavaScript最佳实践:可维护性
- 微信开发第5章 通过accesstoken获取用户基本信息并修改用户备注
- 【G】开源的分布式部署解决方案 - 预告篇
- Git基础教程(一)
- 自动获取客户端的ip地址
- Android开发者的Anko使用指南(三)之资源
- bzoj 3450 期望分数
- MySQL5.6主从复制最佳实践
- Math.abs(~2018) —— 入群问答题
- WPF 学习笔记-在WPF下创建托盘图标
- 利用rundll32执行程序的函数执行程序
- 解决navicat连接不上mysql服务器
- Linux常用命令之tr