Description

  在一个给定形状的棋盘(形状可能是不规则的)上面摆放棋子,棋子没有区别。要求摆放时任意的两个棋子不能放在棋盘中的同一行或者同一列,请编程求解对于给定形状和大小的棋盘,摆放k个棋子的所有可行的摆放方案C。
 
  标准的回溯的问题,直接按行递归,就像八皇后的递归。
 
代码如下:
#include<iostream>
#include<cmath>
#include<cstdio>
#include<cstring> using namespace std; int n,k;
int map1[][];
int remi[],remj[];
int ans;
int cou; bool judge(int x,int y)
{
for(int i=;i<cou;++i)
if(remj[i]==y)
return ; return ;
} void dfs(int cur,int hang)
{
if(cur==k)
{
++ans;
return;
} for(int i=hang;i<=n;++i)
{
if(n-i+<k-cur)
break; for(int j=;j<=n;++j)
if(map1[i][j]&&judge(i,j))
{
remi[cou]=i;
remj[cou++]=j;
dfs(cur+,i+);
--cou;
}
}
} int main()
{
char c,s[]; ios::sync_with_stdio(false); for(cin>>n>>k;n!=-&&k!=-;cin>>n>>k)
{
ans=;
cou=;
for(int i=;i<=n;++i)
{
cin>>s; for(int j=;j<=n;++j)
{
c=s[j-];
if(c=='#')
map1[i][j]=;
else
map1[i][j]=;
}
} dfs(,); cout<<ans<<endl;
} return ;
}

最新文章

  1. 【iOS】彩色TabBar切换动画实现
  2. 公网IP映射修改后,原先的图片访问却不行了
  3. 变形--扭曲 skew()
  4. !important css样式
  5. 一些需要注意的C知识点
  6. 转:Spring中@Autowired注解、@Resource注解的区别
  7. 跨站脚本攻击(XSS)
  8. windows server 2003 负载平衡的详细设置步骤(转载)
  9. Salt安装
  10. struts2中根对象以及ognl .
  11. 设置input框文字垂直居中和宽度
  12. springboot情操陶冶-@ConfigurationProperties注解解析
  13. day 07
  14. python 逻辑判断 循环练习题
  15. C# CountdownEvent实现
  16. linux /Android 平台下使用 i2c-tools
  17. Spring事务异常回滚,捕获异常不抛出就不会回滚
  18. Django实战(6):对比RoR和Django的模板系统
  19. webstorm for ubuntu install
  20. NPOI创建Excel批注

热门文章

  1. slf4j(simple logging facade for java)
  2. css 重新学习系列(3)
  3. Android OpenGL ES(十)绘制三角形Triangle .
  4. C语言客户端服务器代码
  5. CDockablePane 关闭的问题
  6. selenium和pythond的区别
  7. 提高MySQL查询速度
  8. [转]Android Shape渲染的使用(经典,学习研究不后悔)
  9. elasticsearch集群内部节点超时解决
  10. 转:利用ant与jmeter实现负载测试自动化