1217:棋盘问题

时间限制: 1000 ms         内存限制: 65536 KB
提交数: 10844     通过数: 5141

【题目描述】

在一个给定形状的棋盘(形状可能是不规则的)上面摆放棋子,棋子没有区别。要求摆放时任意的两个棋子不能放在棋盘中的同一行或者同一列,请编程求解对于给定形状和大小的棋盘,摆放 k 个棋子的所有可行的摆放方案 C。

【输入】

输入含有多组测试数据。

每组数据的第一行是两个正整数n,k,用一个空格隔开,表示了将在一个n×n的矩阵内描述棋盘,以及摆放棋子的数目。 (n≤8,k≤n)

当为−1−1时表示输入结束。

随后的n行描述了棋盘的形状:每行有n个字符,其中 # 表示棋盘区域,. 表示空白区域(数据保证不出现多余的空白行或者空白列)。

【输出】

对于每一组数据,给出一行输出,输出摆放的方案数目C(数据保证C<2^31)。

【输入样例】

2 1
#.
.#
4 4
...#
..#.
.#..
#...
-1 -1

【输出样例】

2
1

【分析】

本题和八皇后问题类似,以样例1为例,棋盘n=2,k=1,在2*2的矩阵中,放1枚棋子的方案数,其中,#为棋盘区域,可以放置,.为空白区域,不能放置,假设放置为@,可行方案1为:

@ .

. #

可行方案2为:

# .

. @

【参考代码】

#include <stdio.h>
#include <string.h>
#define N 10char maps[N][N];    //棋盘
int vis[N];         //访问数组
int n;              //棋盘规模
int k;              //k个棋子
int cnt;            //可行方案数void dfs(int x,int y)
{int i,j;if(y==k){cnt++;return;}for(i=x;i<=n;i++)                        //x前面的行不用考虑 for(j=1;j<=n;j++)if(maps[i][j]=='#' && !vis[j])   //列判断 {vis[j]=1;dfs(i+1,y+1);vis[j]=0;}return;
}
int main()
{int i,j;while(scanf("%d%d",&n,&k) && n!=-1 || k!=-1){getchar();memset(vis,0,sizeof(vis));for(i=1;i<=n;i++){for(j=1;j<=n;j++)scanf("%c",&maps[i][j]);getchar();} cnt=0;dfs(1,0);printf("%d\n",cnt);}return 0;
}

http://ybt.ssoier.cn:8088/problem_show.php?pid=1217

信息学奥赛一本通(1217:棋盘问题)相关推荐

  1. 信息学奥赛一本通(基础算法与数据结构-题解汇总目录)

    信息学奥赛一本通(C++版)在线评测系统 基础(二)基础算法   更新中...... 第一章高精度计算 1307[例1.3]高精度乘法 1308[例1.5]高精除 1309[例1.6]回文数(Noip ...

  2. Knight Moves(信息学奥赛一本通-T1450)

    [题目描述] 编写一个程序,计算一个骑士从棋盘上的一个格子到另一个格子所需的最小步数.骑士一步可以移动到的位置由下图给出. [输入] 第一行给出骑士的数量 n. 在接下来的 3n 行中,每 3 行描述 ...

  3. 信息学奥赛一本通C++语言-----1120:同行列对角线的格

    [题目描述] 输入三个自然数nn,ii,j(1≤i≤n,1≤j≤n)j(1≤i≤n,1≤j≤n),输出在一个n×nn×n格的棋盘中(行列均从11开始编号),与格子(ii,jj)同行.同列.同一对角线的 ...

  4. 信息学奥赛一本通T1451:棋盘游戏

    信息学奥赛一本通T1451:棋盘游戏 [题目描述] 在一个 4×4 的棋盘上有 8 个黑棋和 8 个白棋,当且仅当两个格子有公共边,这两个格子上的棋是相邻的.移动棋子的规则是交换相邻两个棋子. 给出一 ...

  5. 信息学奥赛一本通:1219.马走日

    信息学奥赛一本通:1219.马走日 1219:马走日 时间限制: 1000 ms 内存限制: 65536 KB 提交数: 7406 通过数: 3863 [题目描述] 马在中国象棋以日字形规则移动. 请 ...

  6. 信息学奥赛一本通 (C++)上机练习

    信息学奥赛一本通(C++)上机练习 此书为娃儿的第一本刷题书.娃儿现在四年级 ,希望他能坚持下来.特开贴加油 luogu: disangan223 第一部分 C++语言 第一章 C++语言入门 T10 ...

  7. 信息学奥赛一本通_长乐一中老师演绎“奥赛传奇”

    董永建(右一)在课堂上. 台海网5月14日讯 据福州晚报报道,长乐一中有一位"传奇"老师--15年来,他辅导的学生在全国高中生信息学奥赛中获金牌3人次.银牌3人次.铜牌5人次:在全 ...

  8. 信息学奥赛一本通 提高篇 第5章 矩阵乘法

    例1 矩阵AXB 信息学奥赛一本通(C++版)在线评测系统 [矩阵乘法]矩阵A×B_Uletay-CSDN博客 矩阵乘法--矩阵A×B_vina的博客-CSDN博客 一本通1641[例 1]矩阵 A× ...

  9. 《信息学奥赛一本通提高篇》第6章 组合数学

    例1 计算系数(NOIP2011提高) 信息学奥赛一本通(C++版)在线评测系统 NOIP2011计算系数_nanhan27的博客-CSDN博客 「NOIP2011」 计算系数 - 组合数_TbYan ...

  10. 《信息学奥赛一本通 提高篇》

    提高篇 第一部分 基础算法 第1章 贪心算法 提高篇 第一部分 基础算法 第1章 贪心算法_青少年趣味编程-CSDN博客 提高篇 第一部分 基础算法 第1章 贪心算法 提高篇 第一部分 基础算法 第1 ...

最新文章

  1. Android 自定义Dialog 的使用
  2. 公钥与私钥,HTTPS详解
  3. 面试的算法2(C语言)(整理)
  4. Catch a cold, will be back later
  5. SpringMVC学习笔记七:SpringMVC的数据验证
  6. Android视频: YUV转RGB
  7. kafka最好用的脚本一:kafka-topic
  8. redis批量删除指定的key
  9. machine learning (7)---normal equation相对于gradient descent而言求解linear regression问题的另一种方式...
  10. 智能化施工(综合管线)
  11. 手机1像素线粗_移动端1像素边框问题
  12. matlab sor解线性方程组,解线性方程组的SOR迭代法及其MATLAB实现.pdf
  13. goto解密PHP源码解密程序源码下载
  14. 使用sql服务器发送贺卡_发送免费电子贺卡的最佳网站
  15. 关于bootstrapValidator 表单校验remote出现两次重复提交才能验证通过问题处理
  16. 《生物信息学:导论与方法》--本体论、分子通路鉴定--听课笔记(十八)
  17. 猿辅导2017 笔试题
  18. 重邮计算机学院新闻,感知重邮丨重庆邮电大学计算机学院稳固学科建设核心 提升人才培养质量...
  19. 把梳子卖给和尚的故事(网络营销策略,精彩案例分析)
  20. 【Java】全栈工程师

热门文章

  1. 无法使用此数据源,因为没有正确配置performancepoint services
  2. Lost HTML Intellisense within ASP.NET AJAX Controls
  3. 2022年轻人潮流爱好报告:被朋友圈高赞的神秘爱好,不烧钱还能脱单
  4. 小伙用 12 张图讲明白了 Redis 持久化!
  5. 几年不联系的前女友,加我就为说这……
  6. 五年了,你还在用junit4吗?
  7. 面试官:缓存一致性问题怎么解决?
  8. EasyUi之datagrid常见使用
  9. Linux系统(Centos)下安装nodejs并配置环境
  10. Java普通类获取Spring框架Bean 的五种方法