当前位置: 首页 > news >正文

01321:棋盘问题

|DFS|回溯|

难点1:DFS,对于dfs(h,t)表示的“即将在第h行进行摆放,已摆放的棋子数为t个”,即如何在dfs函数内部进行递归:若该棋可以放在第h行的第i个位置(标注take[i]=true),则对改行以下行中所有可行的点进行递归

难点2:回溯算法框架

/* 回溯算法框架 */
void backtrack(State *state, vector<Choice *> &choices, vector<State *> &res) {// 判断是否为解if (isSolution(state)) {// 记录解recordSolution(state, res);// 不再继续搜索return;}// 遍历所有选择for (Choice choice : choices) {// 剪枝:判断选择是否合法if (isValid(state, choice)) {// 尝试:做出选择,更新状态makeChoice(state, choice);backtrack(state, choices, res);// 回退:撤销选择,恢复到之前的状态undoChoice(state, choice);}}
}
https://www.cnblogs.com/Ayanowww/p/11555193.html
#include<iostream>
#include<algorithm>
#include<string>
#include<cmath>using namespace std;int n,k,res;
char chess[10][10];
bool take[10];  //用于判断该列是否已有棋子//用空间换时间void dfs(int h,int t){//h为即将探索的行数,t为已经摆放的个数if(t==k){res++;return;}if(h==n){return;//回溯,重新探索}for(int i=h;i<n;i++){for(int j=0;j<n;j++){if(chess[i][j]=='#'&&!take[j]){take[j] = true;dfs(i+1,t+1);take[j] = false;//结合回溯算法框架理解}}}
}int main(){while(cin>>n>>k){if(n==-1&&k==-1){break;}for(int i=0;i<n;i++){for(int j=0;j<n;j++){cin>>chess[i][j];}}for(int i=0;i<n;i++){take[i] = false;}res = 0;dfs(0,0);cout<<res<<endl;}return 0;
}
http://www.jsqmd.com/news/38842/

相关文章:

  • C 变量的作用域与生存周期
  • 模式识别与机器学习课程笔记(11):深度学习 - 详解
  • 05.创建型 - 简单工厂模式(Simple Factory Pattern)
  • RabbitMQ延迟队列rabbitmq_delayed_message_exchange
  • HaluMem:揭示当前AI记忆系统的系统性缺陷,系统失效率超50%
  • 团队作业2-需求规格说明书
  • Mac安装Visual Studio 2019.dmg详细步骤(附图解,小白也能懂,附安装包)
  • 20251112 正睿
  • 如何根据色带计算电阻阻值
  • 25.11.12 差分约束算法
  • 11/12
  • Linux C/C++ 学习日记(27):KCP协议(三):源码分析与使用示例 - 实践
  • 解决Cursor编辑器无法通过include path识别C++头文件的问题
  • 麒麟桌面系统2503安装openjdk21
  • 重组蛋白基础与技术概述
  • Day36(6)-F:\硕士阶段\Java\课程代码\后端\web-ai-code\web-ai-project01
  • E. Journey
  • Dynamics 365 Field Service跨站脚本欺骗漏洞分析
  • Linux优秀的系统--信号(3--信号的保存、阻塞)
  • 深入解析:SQL提数与数据分析指南
  • 日报11.12
  • 大家来写 ICPC 西安(没写完)
  • [译] 省略 Async 与 Await
  • 你的代码正在腐烂!你的团队正走在死亡螺旋上:技术债务积累的5个危险信号!
  • iverilog、gtkwave工具链接
  • 2025 11 12
  • 使用WiX创建Windows应用安装包 - -YADA
  • 学生信息管理系统团队项目随笔
  • Total Recall: 如何在Windows下开发输入法
  • 大数据量场景下的编辑 / 选择 / 详情优化