试题 算法训练 车的放置(蓝桥杯c++)
问题描述
在一个n*n的棋盘中,每个格子中至多放置一个车,且要保证任何两个车都不能相互攻击,有多少中放法(车与车之间是没有差别的)
输入格式
包含一个正整数n
输出格式
一个整数,表示放置车的方法数
样例输入
2
样例输出
7
数据规模和约定
n<=8
【样例解释】一个车都不放为1种,放置一个车有4种,放置2个车有2种。
算法思路:
这道题考察的是搜索回溯算法,我们都知道在象棋里车的攻击方式是直线行的,也就是说,只要不把他们放在同一行或者同一列就可以避免相互攻击,从题中我们可以了解到,题目要求不一定在每一行都必须放,即在这一行放不放都是一种方案(这就是与n皇后问题不同的地方)。因此我们搜索的时候都会对应两种选择,在这一行放或者不在这一行放,每种选择都要搜索一遍。
#include <bits/stdc++.h>
using namespace std;
int N;
long long ans=1; //刚开始什么也不放也属于一种答案
bool visited[10]; //标志被放置的列
void dfs(int step) //表示从第step行开始放
{if(step>N) return ; //如果超过规定的棋盘边界N,跳出。for(int i=1;i<=N;i++)if(!visited[i]) //如果这一列没有被放置{visited[i]=true; //在这个位置放置它ans++; //该情况的答案+1dfs(step+1); //肯定不能在同一行放了,跳到下一行visited[i]=false; //回溯}dfs(step+1); //不一定从第step行开始放(即第step行没有也可以),从step+1行开始放也可以
}
int main()
{cin>>N;dfs(1);//从第一行开始搜cout<<ans;return 0;
}
下面我根据搜索的步骤给大家画一下搜到的答案的顺序情况
1.什么也不放
2.放第1行第1列
3.在2的基础上放第2列
4.回溯,放在第1行第2列
5.在4的基础上放第2行
6.回溯,第1行什么也不放,从第2行第1列开始放
7.回溯,从第2行第2列开始
试题 算法训练 车的放置(蓝桥杯c++)相关推荐
- 试题 算法训练 一元三次方程求解---蓝桥杯
试题 算法训练 一元三次方程求解 题目描述: 资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述 有形如:ax3+bx2+cx+d=0 这样的一个一元三次方程.给出该方程中各项的系数(a ...
- 试题 算法训练 无聊的逗 - 蓝桥杯
状态间的比较 (暴力检索) : 选出在两根一样长的情况下长度最长的, 实际就是2^n 种组合比较,在状态检索中, 找到 不同状态(无重复的木棍)的组合 并且 木棍总长度相等 ...
- 蓝桥杯 试题 算法训练 无聊的逗 C++ 详解
题目: 逗志芃在干了很多事情后终于闲下来了,然后就陷入了深深的无聊中.不过他想到了一个游戏来使他更无聊.他拿出n个木棍,然后选出其中一些粘成一根长的,然后再选一些粘成另一个长的,他想知道在两根一样长的 ...
- 蓝桥杯 试题 算法训练 无聊的逗 C++ 详解 - 未完善
题目: 逗志芃在干了很多事情后终于闲下来了,然后就陷入了深深的无聊中.不过他想到了一个游戏来使他更无聊.他拿出n个木棍,然后选出其中一些粘成一根长的,然后再选一些粘成另一个长的,他想知道在两根一样长的 ...
- 蓝桥杯 试题 算法训练 筛选号码 Java
蓝桥杯 试题 算法训练 筛选号码Java 算法训练 筛选号码 资源限制 时间限制:1.0s 内存限制:512.0MB 问题描述 有n个人围成一圈,顺序排号(编号为1到n).从第1个人开始报数(从1到3 ...
- 蓝桥杯 试题 算法训练 无聊的逗
蓝桥杯 试题 算法训练 无聊的逗 问题描述 逗志芃在干了很多事情后终于闲下来了,然后就陷入了深深的无聊中.不过他想到了一个游戏来使他更无聊.他拿出n个木棍,然后选出其中一些粘成一根长的,然后再选一些粘 ...
- 蓝桥杯试题 算法训练 绘制地图
蓝桥杯试题 算法训练 绘制地图 问题描述 最近,WYF正准备参观他的点卡工厂.WYF集团的经理氰垃圾需要帮助WYF设计参"观"路线.现在,氰垃圾知道一下几件事情: 1.WYF的点卡 ...
- 蓝桥杯:试题 算法训练 Remember the A La Mode
蓝桥杯:试题 算法训练 Remember the A La Mode 资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述 Hugh Samston经营着一个为今年的ICPC世界总决赛的参 ...
- 蓝桥杯试题 算法训练 Have You Ever Heard About the Word?
试题 算法训练 Have You Ever Heard About the Word? 资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述 一个字符串的子串是该字符串的一段连续子序列,如 ...
最新文章
- 小小总结,写得有些乱
- Taro+react开发(95):问答模块02
- 漫步数学分析十二——嵌套
- vue-cil+vuex 构建一个简单的记事本应用
- 141.4. 分布式安装(CentOS 6 + hadoop-1.1.2)
- 赛锐信息:SAP ABAP 常量和字面量
- win32汇编-窗口 对话框 (三)
- /usr/bin/sed: No such file or directory
- mysql ON DUPLICATE KEY UPDATE重复插入时更新
- conficker病毒
- vs2019python使用教程_vs2019安装和使用详细图文教程
- js原型、原型链、原型链继承详解
- 微信小程序开发者工具无法登录 不显示登录二维码
- 2022年节约用水倡议书
- python运算符和基本数据类型你了解吗?
- 买外链要多少钱?外链要去哪里买?
- 新发现,新挑战,技术出海的机遇与挑战丨PingCAP DevCon 2022 出海专场
- kubernetes pod 级别的 jvm 监控
- 数字电路逻辑设计 习题集
- xshell使用sftp命令总结