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 ;
}

最新文章

  1. Android消息传递之EventBus 3.0使用详解
  2. 图解SQL的Join(转)
  3. 无法识别的属性“targetFramework
  4. ACM Haffman编码
  5. Java fundamentals of basic IO
  6. JSF 2 link, commandLink and outputLink example
  7. 页面多语系自动切换-.resx
  8. JavaScript最佳实践:可维护性
  9. 微信开发第5章 通过accesstoken获取用户基本信息并修改用户备注
  10. 【G】开源的分布式部署解决方案 - 预告篇
  11. Git基础教程(一)
  12. 自动获取客户端的ip地址
  13. Android开发者的Anko使用指南(三)之资源
  14. bzoj 3450 期望分数
  15. MySQL5.6主从复制最佳实践
  16. Math.abs(~2018) —— 入群问答题
  17. WPF 学习笔记-在WPF下创建托盘图标
  18. 利用rundll32执行程序的函数执行程序
  19. 解决navicat连接不上mysql服务器
  20. Linux常用命令之tr

热门文章

  1. char[],char *,string之间转换
  2. c++11多线程记录0
  3. k8s-架构中各个组件介绍
  4. Oracle的视图和索引
  5. Stopwatch 类用于计算程序运行时间
  6. protoc文件生成cs文件
  7. Java Mockito 笔记
  8. quota - linux磁盘配额管理
  9. easydict的使用方法
  10. poj 2102 A计划