[kuangbin带你飞]专题一 简单搜索 A - 棋盘问题

2024-03-22 18:40

本文主要是介绍[kuangbin带你飞]专题一 简单搜索 A - 棋盘问题,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

简单的DFS,不过还是挺开心的!
哈哈!
POJ宕机了,在OpenJ_Bailian上提交的( https://vjudge.net/problem/OpenJ_Bailian-1321 )

可以先看一下N皇后问题再做这道题,N皇后问题最初是八皇后问题,很经典的问题,可以百度一下背景故事,蛮好玩的:

题目:
https://vjudge.net/problem/HDU-2553

题解:
N皇后问题(DFS) HDU - 2553【详记】: https://blog.csdn.net/qq_41246972/article/details/86768920
N皇后问题的两个最高效的算法: https://blog.csdn.net/hackbuteer1/article/details/6657109

另外不太懂DFS或者递归思想的,可以试着用递归写个代码输出组合(例如输入3,输出123,1,2,3,12,13,23),就是排列组合中的组合,应该对理解这种思想有帮助:

1、使用DFS(深搜)遍历所有的序列所有的子组合(子序列)(排列组合中的组合)https://blog.csdn.net/qq_41246972/article/details/86750594

2、DFS——组合与排列
https://blog.csdn.net/cqbzlytina/article/details/78646018#枚举组合combination

以下是我的AC代码

速度还可以:
在这里插入图片描述

#include<vector> 
#include<string>
#include<utility>
#include<iostream>
using namespace std;
int n,k,ans,put[8+1],vec_size,put_1[8+1],re=1;  
vector<pair<int,int>> chess_position;
bool is_here_ok(int line,int row)
{ for(int i=0;i<line;i++) if(put[i]==row) return false;return true;
}
void dfs(int line,int i)
{if(line==k){ans++;return;} for(;i<vec_size;i++)if(chess_position[i].first!=put_1[line-1]||(chess_position[i].first==0&&re))if(is_here_ok(line,chess_position[i].second)){re=0;put[line]=chess_position[i].second;put_1[line]=chess_position[i].first;dfs(line+1,i+1); }re=1;return;
}
void solve()
{for(int i=0;i<n;i++){string input;cin>>input;getchar();for(int j=0;input[j];j++)if(input[j]=='#') {pair<int,int> res (i,j);chess_position.push_back(res);}  } vec_size=chess_position.size(); dfs(0,0);cout<<ans<<endl; return;
}
int main()
{while(true){cin>>n>>k;getchar();if(n==-1||k==-1) return 0;ans=0;solve();chess_position.clear(); } 
} 

哈哈,毕竟是部落格嘛!主要还是日志、记录为主,题解为辅,索性把草稿纸也拍上来,BLOG嘛
?

在这里插入图片描述

这篇关于[kuangbin带你飞]专题一 简单搜索 A - 棋盘问题的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/835960

相关文章

SpringBoot应用中出现的Full GC问题的场景与解决

《SpringBoot应用中出现的FullGC问题的场景与解决》这篇文章主要为大家详细介绍了SpringBoot应用中出现的FullGC问题的场景与解决方法,文中的示例代码讲解详细,感兴趣的小伙伴可... 目录Full GC的原理与触发条件原理触发条件对Spring Boot应用的影响示例代码优化建议结论F

MySQL 中查询 VARCHAR 类型 JSON 数据的问题记录

《MySQL中查询VARCHAR类型JSON数据的问题记录》在数据库设计中,有时我们会将JSON数据存储在VARCHAR或TEXT类型字段中,本文将详细介绍如何在MySQL中有效查询存储为V... 目录一、问题背景二、mysql jsON 函数2.1 常用 JSON 函数三、查询示例3.1 基本查询3.2

Pyserial设置缓冲区大小失败的问题解决

《Pyserial设置缓冲区大小失败的问题解决》本文主要介绍了Pyserial设置缓冲区大小失败的问题解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面... 目录问题描述原因分析解决方案问题描述使用set_buffer_size()设置缓冲区大小后,buf

resultMap如何处理复杂映射问题

《resultMap如何处理复杂映射问题》:本文主要介绍resultMap如何处理复杂映射问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录resultMap复杂映射问题Ⅰ 多对一查询:学生——老师Ⅱ 一对多查询:老师——学生总结resultMap复杂映射问题

java实现延迟/超时/定时问题

《java实现延迟/超时/定时问题》:本文主要介绍java实现延迟/超时/定时问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Java实现延迟/超时/定时java 每间隔5秒执行一次,一共执行5次然后结束scheduleAtFixedRate 和 schedu

如何解决mmcv无法安装或安装之后报错问题

《如何解决mmcv无法安装或安装之后报错问题》:本文主要介绍如何解决mmcv无法安装或安装之后报错问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录mmcv无法安装或安装之后报错问题1.当我们运行YOwww.chinasem.cnLO时遇到2.找到下图所示这里3.

浅谈配置MMCV环境,解决报错,版本不匹配问题

《浅谈配置MMCV环境,解决报错,版本不匹配问题》:本文主要介绍浅谈配置MMCV环境,解决报错,版本不匹配问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录配置MMCV环境,解决报错,版本不匹配错误示例正确示例总结配置MMCV环境,解决报错,版本不匹配在col

Vue3使用router,params传参为空问题

《Vue3使用router,params传参为空问题》:本文主要介绍Vue3使用router,params传参为空问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录vue3使用China编程router,params传参为空1.使用query方式传参2.使用 Histo

使用Python开发一个简单的本地图片服务器

《使用Python开发一个简单的本地图片服务器》本文介绍了如何结合wxPython构建的图形用户界面GUI和Python内建的Web服务器功能,在本地网络中搭建一个私人的,即开即用的网页相册,文中的示... 目录项目目标核心技术栈代码深度解析完整代码工作流程主要功能与优势潜在改进与思考运行结果总结你是否曾经

SpringBoot首笔交易慢问题排查与优化方案

《SpringBoot首笔交易慢问题排查与优化方案》在我们的微服务项目中,遇到这样的问题:应用启动后,第一笔交易响应耗时高达4、5秒,而后续请求均能在毫秒级完成,这不仅触发监控告警,也极大影响了用户体... 目录问题背景排查步骤1. 日志分析2. 性能工具定位优化方案:提前预热各种资源1. Flowable