F - 棋盘问题

Time Limit:1000MS     Memory Limit:10000KB     64bit IO Format:%I64d & %I64u

Description

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

Input

输入含有多组测试数据。 
每组数据的第一行是两个正整数,n k,用一个空格隔开,表示了将在一个n*n的矩阵内描述棋盘,以及摆放棋子的数目。 n <= 8 , k <= n 
当为-1 -1时表示输入结束。 
随后的n行描述了棋盘的形状:每行有n个字符,其中 # 表示棋盘区域, . 表示空白区域(数据保证不出现多余的空白行或者空白列)。 

Output

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

Sample Input

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

Sample Output

2
1

还是那句话,一定要注意读题,一定!一定!一定!!!

这题Kiven到手后泛读了一遍,确立了DFS的思路,却怎么也调不出第二组数据,后来又通读了一遍题意发现原来'#'才是可以放棋子的地方!!出题人不按套路出牌啊!!

好了,先来看题意:

奥,对!这是中文题。。

总之DFS思想,AC代码:

 #include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
const int MAX=; char map[MAX][MAX];
int temp[MAX];//行点个数
int n,k,sum,num;//sum输出值 num已放个数 void DFS(int i){ //DFS (不是很熟练,周末加强)
if(num==k){
sum++;
return;
}
if(i>=n){
return;
}
for(int j=;j<n;j++)
if(!temp[j]&&map[i][j]=='#')
{
temp[j]=;
num++;
DFS(i+);
temp[j]=;
num--;
} DFS(i+);
} int main(){
int i,j;
while(scanf("%d %d",&n,&k)&&n!=-&&k!=-){ getchar();//getchar()还是用不好。。
for(i=;i<n;i++){
for(j=;j<n;j++){
scanf("%c",&map[i][j]);
getchar();
}
}
memset(temp,,sizeof(temp));
sum=;num=;
DFS();
printf("%d\n",sum);//又加了“&”!!细节问题太多
}
return ;
}

写本题的时候发现了很多问题,DSF运用不熟练,字符串的输入格式等都需要加强。

F - 棋盘问题的更多相关文章

  1. Mysql_以案例为基准之查询

    查询数据操作

  2. F: Horse Pro 马走棋盘 BFS

    F: Horse Pro 豆豆也已经开始学着玩象棋了,现在豆豆已经搞清楚马的走法了,但是豆豆不能确定能否在 100 步以内从一个点到达另一个点(假设棋盘无限大). Input 第一行输入两个整数 x1 ...

  3. TYVJ1035 棋盘覆盖

    时间: 1000ms / 空间: 131072KiB / Java类名: Main 描述 给出一张n*n(n<=100)的国际象棋棋盘,其中被删除了一些点,问可以使用多少1*2的多米诺骨牌进行掩 ...

  4. BZOJ1057[ZJOI2007]棋盘制作 [单调栈]

    题目描述 国际象棋是世界上最古老的博弈游戏之一,和中国的围棋.象棋以及日本的将棋同享盛名.据说国际象棋起源于易经的思想,棋盘是一个8*8大小的黑白相间的方阵,对应八八六十四卦,黑白对应阴阳. 而我们的 ...

  5. 【BZOJ-3039&1057】玉蟾宫&棋盘制作 悬线法

    3039: 玉蟾宫 Time Limit: 2 Sec  Memory Limit: 128 MBSubmit: 753  Solved: 444[Submit][Status][Discuss] D ...

  6. codevs2171 棋盘覆盖

    题目描述 Description 给出一张n*n(n<=100)的国际象棋棋盘,其中被删除了一些点,问可以使用多少1*2的多米诺骨牌进行掩盖. 输入描述 Input Description 第一 ...

  7. BZOJ2706 : [SDOI2012]棋盘覆盖

    A类数据: 将棋盘黑白染色,相邻的点之间连边,求出二分图最大匹配即可. B类数据: 答案为$\lfloor\frac{n^2-1}{3}\rfloor$,用FFT加速计算即可,时间复杂度$O(L\lo ...

  8. BZOJ-3228 棋盘控制 线段树+扫描线+鬼畜毒瘤

    3228: [Sdoi2008]棋盘控制 Time Limit: 10 Sec Memory Limit: 128 MB Submit: 23 Solved: 9 [Submit][Status][D ...

  9. POJ 1191 棋盘分割

    棋盘分割 Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 11213 Accepted: 3951 Description 将一个 ...

随机推荐

  1. jQuery中slideToggle()的详细使用方法和解释

    $(selector).slideToggle(speed,callback) 参数       speed和callback Speed  可选.规定元素从隐藏到显示的速度,默认‘normal’可能 ...

  2. HTML--2图片热点,网页划区,拼接,表单

    图片热点: 规划出图片上的一个区域,可以做出超链接,直接点击图片区域就可以完成跳转的效果. 示例: 网页划区: 在一个网页里,规划出一个区域用来展示另一个网页的内容. 示例: 网页的拼接: 在一个网络 ...

  3. lamp环境的搭建和配置

    安装apache httpd-2.2.31.tar.gz rpm -qa|grep httpd   ##卸载旧的httpd httpd--.el6.centos.x86_64 httpd-tools- ...

  4. [数据挖掘课程笔记]无监督学习——聚类(clustering)

    什么是聚类(clustering) 个人理解:聚类就是将大量无标签的记录,根据它们的特点把它们分成簇,最后结果应当是相同簇之间相似性要尽可能大,不同簇之间相似性要尽可能小. 聚类方法的分类如下图所示: ...

  5. 微信公众号验证TOKEN

    服务端验证微信token header('Content-type:text'); define("TOKEN", "weixin"); $signature ...

  6. UEditor上传文件的默认地址修改

    using System;using System.Collections.Generic;using System.IO;using System.Linq;using System.Text.Re ...

  7. Dictionary and KeyValuePair关系

    简单一句话: Dictionary 是 由 KeyValuePair结构 组成的集合 The Dictionary<TKey, TValue>.Enumerator.Current pro ...

  8. python类初探

    class human: is_alive=True is_man=True def __init__(self,age): print('this is __init__() method, whi ...

  9. 时尚设计div+css免费模板

    时尚设计div+css免费网页模板,时尚设计,div+css. http://www.huiyi8.com/moban/

  10. IDEA 设置忽略那些文件不提交到SVN服务器