poj1321棋盘问题(dfs+摆放问题)
Input
每组数据的第一行是两个正整数,n k,用一个空格隔开,表示了将在一个n*n的矩阵内描述棋盘,以及摆放棋子的数目。 n <= 8 , k <= n
当为-1 -1时表示输入结束。
随后的n行描述了棋盘的形状:每行有n个字符,其中 # 表示棋盘区域, . 表示空白区域(数据保证不出现多余的空白行或者空白列)。
Output
Sample Input
2 1
#.
.#
4 4
...#
..#.
.#..
#...
-1 -1
Sample Output
2
1 注意:
不是每一行都要摆 代码:
import java.util.Arrays;
import java.util.Scanner; public class Main{
static int n,k,cnt;
static final int N=10;
static char map[][]=new char[N][N];
static boolean vis[]=new boolean[N];//列
static void dfs(int r,int t){//r是行 t是第几个棋
//这种多个if条件的都要加上return,避免出错
if(t==k) {
cnt++; return;
}
if(r>=n) return;
//当前行摆放或者不摆放
for(int i=0;i<n;i++){
if(!vis[i] && map[r][i]=='#'){
vis[i]=true;
dfs(r+1,t+1);
vis[i]=false;
}
}
dfs(r+1,t);
}
public static void main(String[] args) {
Scanner scan=new Scanner(System.in);
while(scan.hasNext()){
n=scan.nextInt();
k=scan.nextInt();
if(n==-1 && k==-1) break;
for(int i=0;i<n;i++) map[i]=scan.next().toCharArray();
Arrays.fill(vis, false);
cnt=0;
dfs(0,0);
System.out.println(cnt);
}
}
}
poj1321棋盘问题(dfs+摆放问题)的更多相关文章
- POJ1321 棋盘问题 —— DFS回溯
题目链接:http://poj.org/problem?id=1321 棋盘问题 Time Limit: 1000MS Memory Limit: 10000K Total Submissions ...
- POJ1321 棋盘问题(dfs)
题目链接. 分析: 用 dfs 一行一行的搜索,col记录当前列是否已经放置. AC代码如下: #include <iostream> #include <cstdio> #i ...
- poj1321 棋盘(dfs)
#include<iostream> #include<cstring> using namespace std; ]={},sum=; ][]; void dfs(int a ...
- poj1321 棋盘问题(深搜dfs)
转载请注明出处:http://blog.csdn.net/u012860063? viewmode=contents 题目链接:id=1321">http://poj.org/prob ...
- DFS(3)——poj1321棋盘问题
一.题目回顾 题目链接:棋盘问题 Description 在一个给定形状的棋盘(形状可能是不规则的)上面摆放棋子,棋子没有区别.要求摆放时任意的两个棋子不能放在棋盘中的同一行或者同一列,请编程求解对于 ...
- POJ1321棋盘问题(DFS)
Description 在一个给定形状的棋盘(形状可能是不规则的)上面摆放棋子,棋子没有区别.要求摆放时任意的两个棋子不能放在棋盘中的同一行或者同一列,请编程求解对于给定形状和大小的棋盘,摆放k个棋子 ...
- POJ 1321 棋盘问题(DFS板子题,简单搜索练习)
棋盘问题 Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 44012 Accepted: 21375 Descriptio ...
- POJ1321 棋盘问题(简单搜索)
题意: 在一个给定形状的棋盘(形状可能是不规则的)上面摆放棋子,棋子没有区别.要求摆放时任意的两个棋子不能放在棋盘中的同一行或者同一列,请编程求解对于给定形状和大小的棋盘,摆放k个棋子的所有可行的摆放 ...
- POJ 1321 棋盘问题 DFS 期末前水一水就好……
A - 棋盘问题 Time Limit:1000MS Memory Limit:10000KB 64bit IO Format:%I64d & %I64u Submit Sta ...
随机推荐
- C#实现的Check Password和锁定输错密码锁定账户
C#实现的Check Password,并根据输错密码的次数分情况锁定账户:如果输入错误3次,登录账户锁定5分钟并提示X点X分后重试登录.如果5分钟后再次输入,累计输入错误密码累计达到5次.则账户会被 ...
- mysql必知必会--使用MySQL
连接 在具有可供使用的MySQL DBMS和客户机软件之后,有必要简要讨 论一下如何连接到数据库. MySQL与所有客户机 - 服务器DBMS一样,要求在能执行命令之前登 录到DBMS.登录名可以与网 ...
- 小白的linux笔记6:关于挂载硬盘
每个硬盘,包括移动硬盘,插上之后都会有个名字,如sda,sdb,sdc.... sda,sdb等名字只与插上的顺序有关.而且重启后有可能会发生变化. 查看全部硬盘可以用fdisk -l. df -h ...
- .net Core3.0 +Nlog+Sqlserver
1.下载Nlog.Nlog.Web.AspNetCore包 2.添加NLog.config xml文件 资料https://github.com/NLog/NLog/wiki/Database-ta ...
- #AcWing系列课程Level-2笔记——2. 归并排序算法
归并排序算法 编写归并排序,记住下面的思路,代码也就游刃有余了! 1.首先确定数组的中间位置的分界点(下标),也就是mid=(left+right)>>1,分成left,right两段. ...
- Luogu2040 | 打开所有的灯 (广搜+状压)
题目背景 pmshz在玩一个益(ruo)智(zhi)的小游戏,目的是打开九盏灯所有的灯,这样的游戏难倒了pmshz... 题目描述 这个灯很奇(fan)怪(ren),点一下就会将这个灯和其周围四盏灯的 ...
- STM32 & RT-Thread的逆向入门
STM32 & RT-Thread的逆向入门 backahasten@0xFA 现在,各种MCU的价格越来越低,同等条件下能买到的ROM和RAM资源也多了.对 ...
- Windows电脑常用快捷键
Windows 徽标键键盘快捷方式: Windows 徽标键 打开或关闭“开始”屏幕 Windows 徽标键 + A 打开操作中心 Windows 徽标键 + B ...
- Anroid Studio 教程干货
常见设置 a)在Setting中,修改主题.修改工程目录的字体大小. b)在Setting中,显示行号: c)设置注释模板,File–>Other Setting –> Default ...
- html无卡顿动画实现——requestAnimationFrame
<!DOCTYPE html> <html lang="en" xmlns="http://www.w3.org/1999/xhtml"> ...