棋盘问题 POJ - 1321(DFS)

C/C++游戏项目详细教程:《中国象棋》 中国象棋是起源于中国的一种棋,属于二人对抗性游戏的一种,在中国有着悠久的历史。由于用具简单,趣味性强,成为流行极为广泛的棋艺活动。 中国象棋的中国棋文化,也是中华民族的文化瑰宝,它源远流长,趣味浓厚,基本规则简明易懂。中国象棋在中国的群众中基础远远超过围棋,是普及最广的棋类项目,中国象棋已流传到十几个国家和地区。 中国象棋使用方形格状棋盘,圆形棋子共有32个,红黑二色各有16个棋子,摆放和活动在交叉点上。双方交替行棋,先把对方的将(帅)“将死”的一方获胜。 我们今天就来看看我们自... 阅读详情

棋盘问题 POJ - 1321

在一个给定形状的棋盘(形状可能是不规则的)上面摆放棋子,棋子没有区别。要求摆放时任意的两个棋子不能放在棋盘中的同一行或者同一列,请编程求解对于给定形状和大小的棋盘,摆放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
题意:

给定一个n*n的图,和k个棋子,#上放棋子,要求每行每列只能有一个棋子的方案数有多少

分析:

只枚举行即可,用以为数组标记列,看这一列上有没有棋子,然后往下dfs

好久没写搜索了,今天找了个最简单的都没写出来,真tmd菜成狗了

code:

#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
bool vis[20];//标记i列是否已经有了棋子
char mp[20][20];
int n,k,ans;
void dfs(int x,int s){//第x行,已经放了s个棋子
    if(s == k){
        ans++;
        return;
    }
    for(int i = x; i < n; i++){
        for(int j = 0; j < n; j++){
            if(!vis[j] && mp[i][j] == '#'){
                vis[j] = 1;
                dfs(i+1,s+1);
                vis[j] = 0;
            }
        }
    }
}
int main(){
    while(~scanf("%d%d",&n,&k)){
        if(n == -1 && k == -1) break;
        for(int i = 0; i < n; i++){
            scanf("%s",mp[i]);
        }
        memset(vis,0,sizeof(vis));
        ans = 0;
        dfs(0,0);
        printf("%d\n",ans);
    }
    return 0;
}
【代码超详解】POJ 1321 棋盘问题(DFS,282 ms) 一、题目描述 棋盘问题 Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 94188 Accepted: 43014 Description 在一个给定形状的棋盘(形状可能是不规则的)上面摆放棋子,棋子没有区别。要求摆放时任意的两个棋子不能放在棋盘中的同一行或者同一列,请编程求解对于给定形状和大小的棋盘,摆放k个棋子的所有可行... 阅读详情

相关推荐

18650锂电池充放电测试全流程:从实验室到实际应用的避坑指南

本文详细介绍了18650锂电池充放电测试的全流程,从实验室设备选型到实际应用中的常见问题解决方案。涵盖测试前的准备工作、标准测试流程执行、动态工况测试以及数据深度分析方法,为电池测试工程师和科研人员提供实用的避坑指南。特别针对电压平台异常和温度异常等关键问题,提供了专业的诊断与解决措施。

weixin_30790841的博客 544

【组合数学】棋盘上放车(C++)

Description 在一个N*N的棋盘上,放上K个中国象棋中的车,要求它们互不攻击 问有多少种合理的摆法. (1<=N<=10,0<=K<=N*N) Input N,K Output 方案数 Sample Input 4 4 Sample Output 24 HINT 首先画出图: 这种情况就可以用1234表示,那么这题就被转换成了1234的...

liuzich的博客 1553

VC Spyglass调试秘籍:从Lint报错到代码修复的完整工作流

本文详细介绍了VC Spyglass调试的完整工作流,重点解析了如何高效定位和修复Lint检查中常见的XMRE-L跨模块引用错误。通过对比GUI与命令行(vc_static_shell)双模式调试技巧,并结合TCL脚本实现批量处理与规则豁免,帮助数字设计工程师系统化地提升代码调试效率与质量。

weixin_29246195的博客 575

基础数学——车的攻击

N×N的国际象棋棋盘上有K个车,第i个车位于第Ri​行,第Ci​列。求至少被一个车攻击的格子数量。车可以攻击所有同一行或者同一列的地方。

m0_60738889的博客 960

E4A蓝牙APP开发实战:从零到一构建简易物联网控制终端

本文详细介绍了使用E4A(易安卓)开发蓝牙APP的实战教程,从零开始构建简易物联网控制终端。通过E4A的中文编程环境和内置蓝牙组件,开发者可以快速实现智能家居控制、创客项目遥控等功能。文章涵盖硬件准备、开发环境搭建、核心代码解析及典型应用场景,特别适合零Java基础的电子爱好者入门蓝牙APP开发。

weixin_42715608的博客 474

EU 2021/646 eCall工程拆解:MSD、测试模式与型式核准

紧急呼叫系统(eCall)是车载通信中面向事故救援的安全功能,其原理是在碰撞或人工触发后,通过蜂窝网络向公共安全应答点发送最小数据集(MSD),并建立语音链路。技术价值在于缩短救援响应时间、提升事故后生存率,应用场景覆盖乘用车、轻型商用车及车载T-Box等前装通信模块。面向欧盟市场时,EU 2021/646把eCall从安装要求推进到型式核准测试,关注触发链路、备用电源、GNSS定位、MSD字段、音频质量与回拨能力。工程落地需要围绕测试模式、字段校验、配置管理和送检样件建立可交付合规方案。

weixin_31815843的博客 206

棋盘游戏 HDU - 1281(最大二分图匹配)

C - 棋盘游戏 HDU - 1281 小希和Gardon在玩一个游戏:对一个N*M的棋盘,在格子里放尽量多的一些国际象棋里面的“车”,并且使得他们不能互相攻击,这当然很简单,但是Gardon限制了只有某些格子才可以放,小希还是很轻松的解决了这个问题(见下图)注意不能放车的地方不影响车的互相攻击。 所以现在Gardon想让小希来解决一个更难的问题,在保证尽量多的“车”的前提下

codeswarrior的博客 530

Silvaco TCAD仿真例库——肖特基二极管反向击穿特性(案例)

本文详细介绍了使用Silvaco TCAD仿真例库分析肖特基二极管反向击穿特性的完整流程。通过搭建带保护环的器件结构,配置关键物理模型,并执行反向偏压扫描,深入探讨了雪崩击穿机制、电场分布及设计参数(如漂移区浓度、保护环)对击穿电压的影响,为功率半导体设计与可靠性分析提供了实用的虚拟实验方法。

weixin_29165465的博客 388

《算法谜题》

算法谜题

nameofcsdn的博客 8175

Android无线调试:adb tcpip连接实战指南

本文详细介绍了Android无线调试的完整流程,重点讲解如何使用adb tcpip命令通过Wi-Fi连接设备,摆脱数据线束缚。涵盖环境配置、连接实战、稳定性优化及常见问题排查,帮助开发者高效实现无线adb调试,提升工作效率。

pink的博客 720

PCL ICP算法实现点云精配准【2026最新版】

PCL1.14.1 及之前版本所实现的迭代最近点ICP算法。博客长期更新,本文最新更新时间为:2026年4月17日。

点云侠的博客 31万+

Poj1321—棋盘问题(DFS模板题)

Poj1321—棋盘问题(DFS模板题) 题目链接:https://vjudge.net/problem/POJ-1321 问题描述: Description 在一个给定形状的棋盘(形状可能是不规则的)上面摆放棋子,棋子没有区别。要求摆放时任意的两个棋子不能放在棋盘中的同一行或者同一列,请编程求解对于给定形状和大小的棋盘,摆放k个棋子的所有可行的摆放方案C。 Input ...

baobancha1923的博客 161

PyTorch深度学习实战(4)——常用激活函数和损失函数详解

激活函数和损失函数是深度学习模型中重要组成部分,激活函数和损失函数的选择很大程度上决定了深度神经网络的性能和精度,需要根据具体问题的特点和数据分布等因素进行选择。在本节中,将介绍深度学习中常见的激活函数和损失函数,并说明不同函数的常见应用场景。

盼小辉丶的博客 1万+

棋盘问题 POJ - 1321(dfs)

#include<iostream> #include<cstdio> #include<cstring> using namespace std; int n, k; const int maxn = 10; char chess[maxn][maxn]; int vis_y[maxn]; //判...

weixin_30417487的博客 129

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

POJ1321-棋盘问题-(dfs)

http://poj.org/problem?id=1321 解题: dfs中,两种情况,某一行摆不摆?某一列摆不摆? #include<stdio.h> #include<iostream> #include<algorithm> #include<cstring> #include<math.h> #in...

dengpan1889的博客 123

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

[POJ 1321]棋盘问题 (DFS简单搜索)

中文题目:在一个给定形状的棋盘(形状可能是不规则的)上面摆放棋子,棋子没有区别。要求摆放时任意的两个棋子不能放在棋盘中的同一行或者同一列,请编程求解对于给定形状和大小的棋盘,摆放k个棋子的所有可行的摆放方案C。 INPUT: 输入含有多组测试数据。 每组数据的第一行是两个正整数,n k,用一个空格隔开,表示了将在一个n*n的矩阵内描述棋盘,以及摆放棋子的数目。 n <= 8 , k &...

孙煜晗的博客 867

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

[DFS]poj 1321 棋盘问题

poj 1321 棋盘问题 题意: 规定n*n大小的棋盘,给定棋子数目,求规定棋子数目的摆放方案 思路: 求方案数,dfs更合适吧 1、因为求方案数,注意回溯 2、题目一个坑……,“#”表示才棋盘区域,“.”才相当于墙壁 代码: #include #include #include #include #include #include #include //notic

soundwave_的博客 380

POJ-1321棋盘问题(DFS)深度优先搜索

加油。 To be better. 棋盘问题 ## Descriptions: 在一个给定形状的棋盘(形状可能是不规则的)上面摆放棋子,棋子没有区别。要求摆放时任意的两个棋子不能放在棋盘中的同一行或者同一列,请编程求解对于给定形状和大小的棋盘,摆放k个棋子的所有可行的摆放方案C。 Input 输入含有多组测试数据。 每组数据的第一行是两个正整数,n k,用一个空格隔开,表示了将在一个n*n的矩阵...

A's World 864

POJ 1321 棋盘问题(DFS)

题目链接:POJ 1321 棋盘问题 不知道怎么zhuangta

fobdddf的专栏 609

POJ 1321 棋盘问题(DFS回溯)

POJ 1321 棋盘问题(DFS回溯) http://poj.org/problem?id=1321 题意:要在n*n的不规则棋盘(棋盘上可能有不能放棋子的格子)上放k(k 分析: 类似于8皇后问题,可以同样的dfs回溯构造. 令cnt表示当前我们已经放了几个棋子了,且我们放棋子是从上往下放的(即从行号小的行放到行号大的行).这样我们就保证我们放棋子的时候行号不会重复. 接下来用vi

code 1074

poj dfs相关之1321 棋盘问题

poj dfs相关之1321 棋盘问题

ziqi9216的博客 297

POJ 1321-棋盘问题(DFS 递归)

POJ 1321-棋盘问题 K - DFS Time Limit:1000MSMemory Limit:10000KB64bit IO Format:%I64d & %I64u Description 在一个给定形状的棋盘(形状可能是不规则的)上面摆放棋子,棋子没有区别。要求摆放时任意的两个...

Dara2015的博客 204

POJ 1321 棋盘问题 (DFS)

POJ 1321 棋盘问题 (DFS) 先直接贴代码 #include<iostream> #include<cstring> #include<cstdio> using namespace std; char p[10][10]; bool vis[10]; int ans; int n, k; void dfs(...

weixin_30571465的博客 89

POJ 1321 棋盘问题 --- DFS

  POJ 1321   题目大意:给定一棋盘,在其棋盘区域放置棋子,需保证每行每列都只有一颗棋子。 (注意 .不可放 #可放)   解题思路:利用DFS,从第一行开始依次往下遍历,列是否已经放置棋子用一个数组标记,直至放完要求的棋子数。 /*POJ 1321 棋盘问题 --- DFS*/ #include <cstdio> #include <cstring&...

weixin_30527143的博客 119

POJ.1321 棋盘问题 (DFS)

POJ.1321 棋盘问题 (DFS)题意分析给出n*n的棋盘,棋盘中#表棋盘区域,即可以放置棋子。现在有k个棋子,放置在棋盘区域中,并且要求任意两个棋子不能放在棋盘的同一行或者同一列。求放置k个棋子的方案数有多少。如果要求不能放在同一行,那么在摆放的时候可以按行摆放。现在一行中找到能摆放的#的位置,然后放在这个位置上,dfs递归进入下一行,在下一行再找到合适的位置,如果剩余的棋子个数为0的时候,方

Pengwill's Blog 569
上一篇: Did you mean...(模拟+条件判断)
下一篇: Oil Deposits HDU - 1241(BFS找连通分量)
Guuuuuu老师儿
博客等级 码龄9年 259粉丝 718原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值