POJ - 1321 棋盘问题 【dfs】
发布日期:2021-06-29 14:30:20 浏览次数:2 分类:技术文章

本文共 1461 字,大约阅读时间需要 4 分钟。

题意

类似皇后问题

思路

dfs,本题思路非常清晰了,唯一的问题是,怎么判断一个位置合法?

朴素的每一次标志防放置棋子的同行同列位置不合法是浪费严重的。

参考八皇后问题的优化,只需要标志一列是否放过即可(因为按行搜索不会出现一行放两个的问题)。

code

#include
#define endl '\n'using namespace std;int n,k;char mp[10][10];int vis[10];int ans;void dfs(int t,int k){
if(t==n+1||k==0){
if(k==0) ++ans; return; } dfs(t+1,k); for(int i=1;i<=n;i++){
if(mp[t][i]=='#'&&!vis[i]){
vis[i]=1; dfs(t+1,k-1); vis[i]=0; } } return;}int main(){
ios::sync_with_stdio(false); cin.tie(0); while(cin>>n>>k){
if(n==-1&&k==-1) break; for(int i=1;i<=n;i++) cin>>(mp[i]+1); ans=0; dfs(1,k); cout<
<

ps:更新

或许这种版本的回溯会更好理解一点

#include
#define endl '\n'using namespace std;int n,k;char mp[10][10];int vis[10];int ans;void dfs(int t){
if(t==n+1||k==0){
if(k==0) ++ans; return; } for(int i=1;i<=n;i++){
if(mp[t][i]=='#'&&!vis[i]){
vis[i]=1; //之后不能再找这一列了 k--; //放下一个棋子 dfs(t+1); //在这一行的某一列中有‘#’,直接转到下一行 vis[i]=0; //取消标记方便下一次查找不同的方案 k++; } } dfs(t+1); /如果上一行的列都没有‘#’,则换到下一行 return;}int main(){
ios::sync_with_stdio(false); cin.tie(0); while(cin>>n>>k){
if(n==-1&&k==-1) break; for(int i=1;i<=n;i++) cin>>(mp[i]+1); ans=0; dfs(1); cout<
<
学如逆水行舟,不进则退

转载地址:https://chocolate.blog.csdn.net/article/details/104209204 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:【自制】csdn自定义模块栏目 个性化 【美化个人简介】
下一篇:【acm专题分类】刷题计划 附题目地址 (两个月持续更新中)

发表评论

最新留言

做的很好,不错不错
[***.243.131.199]2024年04月12日 18时11分34秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章

安卓学习笔记——文件存储读写 2019-04-29
【泛微ecology】做好系统备份及各项安全工作 2019-04-29
【泛微E9功能点】日志中心-项目日志 2019-04-29
【泛微E9功能点】日志中心-系统日志 2019-04-29
Oracle TIPS查数据库名 创建临时表空间 创建表空间 新增数据库文件 创建用户 2019-04-29
【泛微】ecology9附件不能为空判断 2019-04-29
【泛微ecology】Table ‘ecology.e9_para_group_concat_max_len‘ doesn‘t exist 2019-04-29
【泛微ecology】从数据库导出人员信息,部门取机构全路径 2019-04-29
DB2数据库 截取日期 yyyy-mm-dd 2019-04-29
解决Office组件调用时未找到“AxImp.exe”问题 2019-04-29
Element中使用el-form-item内部el-input为textarea时由于自生成的.el-form-item__content导致无法设置textarea百分比宽度问题解决 2019-04-29
vue-cli3.0(@vue/cli)设置网站标题时找不到index.html问题解决 2019-04-29
Axios和SpringBoot传递get请求参数是多维数组时后台无法解析问题解决 2019-04-29
使用Visio铅笔工具绘制月牙形、对称曲线等灵活图形及使用组合、拆分等操作绘制灵活Venn图 2019-04-29
使用vscode开发ns3项目(代码高亮、自动补全支持) 2019-04-29
ns3中PointToPointDumbbellHelper类的引入方法(哑铃型网络模拟) 2019-04-29
2020年5月总结(网络拥塞控制和增强学习初瞰) 2019-04-29
Spring Boot配置时遇到javax.net.ssl.SSLHandshakeExcecepton: ..... ValidatorException: PKIX path...错误解决 2019-04-29
创建Spring项目时java.lang.NoClassDefFoundError:org/gradle/api/internal/plugins/DefaultConvention问题解决 2019-04-29
Ignite和SpringBoot整合时出现Failed to initialize system DB connection......MULTI_THREADED问题解决 2019-04-29