题意:POJ少见的中文题,福利啊。

思路:

一开始也没有思路呃呃呃 。 裸搜,连样例都过不去。。。参照了网上的题解:一行一行DFS    茅塞顿开啊。

#include <cstdio>
#include <cstring>
#include <algorithm>
#include <iostream>
using namespace std;
char a[9][9];
bool vis[9];
int ans,n,m;
void stmd(int row,int time)//搜到了第row行,已经放了time个棋子。
{
if(time==m){ans++;return;}//如果正好搜到了m个棋子,答案++。
if(row>n)return; //如果越界,就return
for(int i=1;i<=n;i++)
if(a[row][i]=='#'&&!vis[i])
{
vis[i]=1; //第i列被visit过了
stmd(row+1,time+1);
vis[i]=0;
}
stmd(row+1,time);/*这是重点 重点! 重!点! 重要的事情说三遍。time没有到m时,可以选择直接搜row+1行(也就是多余的行)。即让row行先不放棋子,搜索row+1行的情况。*/
return;
}
int main()
{
while(scanf("%d%d",&n,&m)&&~n&&~m)
{
memset(vis,false,sizeof(vis));
ans=0;
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
cin>>a[i][j];
stmd(1,0);
printf("%d\n",ans);
}
}

POJ 1321 DFS的更多相关文章

  1. POJ - 1321 dfs [kuangbin带你飞]专题一

    枚举行和列即可,当前已经放下cnt个棋子,当前已经搜索到第r行,如果 n - r + cnt  < k 直接退出,因为后面无法放下剩下的棋子. AC代码 #include<cstdio&g ...

  2. 棋盘问题 POJ - 1321(dfs)

    #include<iostream> #include<cstdio> #include<cstring> using namespace std; int n, ...

  3. 【DFS】POJ 1321

    POJ 1321 棋盘问题 题意:中文题不解释. 思路:经典DP,比较取巧的想法是一行行(按照题目意思一行最多只能放一个)来看,标记一列列.注意考虑到有些行可能不放的情况. /** Sample In ...

  4. POJ 1321 简单dfs

    1.POJ 1321  棋盘问题 2.总结: 题意:给定棋盘上放k个棋子,要求同行同列都不重. #include<iostream> #include<cstring> #in ...

  5. POJ 1321 棋盘问题 --- DFS

    POJ 1321 题目大意:给定一棋盘,在其棋盘区域放置棋子,需保证每行每列都只有一颗棋子. (注意 .不可放 #可放) 解题思路:利用DFS,从第一行开始依次往下遍历,列是否已经放置棋子用一个数组标 ...

  6. DFS POJ 1321 棋盘问题

    题目传送门 /* DFS:因为一行或一列都只放一个,可以枚举从哪一行开始放,DFS放棋子,同一列只能有一个 */ #include <cstdio> #include <algori ...

  7. POJ 1321 棋盘问题(C)回溯

    Emmm,我又来 POJ 了,这题感觉比上次做的简单点.类似皇后问题.但是稍微做了一点变形,比如棋子数量是不定的.棋盘形状不在是方形等等. 题目链接:POJ 1321 棋盘问题 解题思路 基本思路:从 ...

  8. poj 1321 棋盘问题 简单DFS

    题目链接:http://poj.org/problem?id=1321 很久没有敲搜索了啊,今天敲了个水题练练手,哈哈.... 题目大意: 就是求在n*n的方格上放置k个棋子的方案数 代码: #inc ...

  9. POJ 1321 棋盘问题(DFS板子题,简单搜索练习)

    棋盘问题 Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 44012   Accepted: 21375 Descriptio ...

随机推荐

  1. 用JS获取地址栏参数的方法(超级简单)

    方法一:采用正则表达式获取地址栏参数:( 强烈推荐,既实用又方便!) function GetQueryString(name) {      var reg = new RegExp("( ...

  2. Primitive JS completion of AJAX

    Firstly , let us explain XMLHttpRequest open(), send(), readyState 1. open(method, url, async, user, ...

  3. Two Sum (c#)

    Given an array of integers, find two numbers such that they add up to a specific target number. The ...

  4. DataTable 删除列 调整列顺序 修改列标题名称

    DataTable dt = new DataTable(); //删除列 dt.Columns.Remove("Sex"); dt.Columns.Remove("Ag ...

  5. js控制select下拉列表数据绑定

    JS代码部分:  <script type="text/javascript"> $(document).ready(function () { $("sel ...

  6. fvvk

    Hello world! D1C0E3D12E624362B9F8D55ABA2E0FB8,D1C0E3D12E624362B9F8D55ABA2E0FB9

  7. TextWatcher 编辑框监听器

    TextWatcher tw = new TextWatcher() { @Override public void beforeTextChanged(CharSequence s, int sta ...

  8. SQL-数学、字符串、时间日期函数和类型转换

    --数学函数 --ABS绝对值,select ABS(-99)--ceiling取上限,select CEILING(4.5)--floor去下限select FLOOR(4.5)--power 几次 ...

  9. Hadoop中如何查看文件的block size

    因为对控制文件的分片数目,进而控制文件的map个数非常感兴趣,因此有查找如下资料的需求.下面来看看我总结的吧:) 当向HDFS上写文件时,可以通过设置dfs.blocksize配置项来设置文件的blo ...

  10. CxImage在VS2010下的配置

    http://blog.csdn.net/youzhuo/article/details/24601621 一.编译Cximage 1.在SourceForge上下载cximage702_full.7 ...