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运用不熟练,字符串的输入格式等都需要加强。

最新文章

  1. 解决pip安装超时
  2. lintcode 滑动窗口的最大值(双端队列)
  3. 【FPGA】【代码】资源优化,结构优化
  4. 重新想象 Windows 8.1 Store Apps (85) - 警报通知(闹钟), Tile 的新特性
  5. jquery选项卡切换
  6. Accessing the Deep Web: A Survey
  7. Swift学习初步(一)
  8. ubuntu 安装sublime并激活
  9. 查看Oracle当前用户下的信息(用户,表视图,索引,表空间,同义词,存储过程函数,约束条件)
  10. Codeforces #345 Div.1
  11. hdu 2203亲和串 (kmp)
  12. Hadoop 实现多文件输出
  13. [Unity Asset]AssetBundle系列——游戏资源打包
  14. 给树莓派开启samba服务
  15. iis 限制动态IP地址访问次数
  16. Code Generation =&gt; Table -&gt; Class for DataGridView use
  17. Failed to execute goal org.springframework.boot
  18. 未能加载文件或程序集&quot;CheckRegister&quot;或它的某一个依赖项.参数错误. (异常来
  19. Internet Explorer 9 已安装在此系统上
  20. ViewPager(视图滑动切换工具)

热门文章

  1. strpos与strstr之间的区别
  2. struts2_6_多个struts配置文件的应用
  3. HDU 1452 Happy 2004(唯一分解定理)
  4. PHP、AJAX综合练习(增、删、改、查、分页、模糊查询)
  5. Spring和ActiveMQ整合的完整实例
  6. 我的Java开发学习之旅------>求N内所有的素数
  7. 【shell】常用的正则表达式
  8. 2018年东北农业大学春季校赛 E wyh的集合 【数学】
  9. Machine Learning No.10: Anomaly detection
  10. Maven简介(六)——Dependency