当前位置: 首页 > 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.zskr.cn/news/47926.html

相关文章:

  • C 变量的作用域与生存周期
  • #题解#洛谷P1496#离散化#
  • 20251112 正睿
  • 如何根据色带计算电阻阻值
  • 《云操作系统(OpenStack)第二版》学习笔记汇总版-从0开始完成在线安装并为离线安装准备软件包
  • Day36(6)-F:\硕士阶段\Java\课程代码\后端\web-ai-code\web-ai-project01
  • 2025 11 12
  • Total Recall: 如何在Windows下开发输入法
  • 大数据量场景下的编辑 / 选择 / 详情优化
  • RabbitMQ相关
  • 使用NVIDIA TAO 6和DeepStream 8构建实时视觉检测管道 - 实践
  • ChatBI 重构工业数据交互:TDengine IDMP 让数据对话更智能
  • 云服务模式进化论:企业云战略的致命误区,从IaaS到FaaS的死亡之旅!
  • Python 实现对遥感影像根据DN值上色
  • 【免费】MySQL自动化运维工具,一键生成WORD和EXCEL
  • 实用指南:轻量化 + 绿色部署的日志监控系统log-monitor设计思路(一)
  • 随机链表的复制-leetcode
  • useActionState 阻止表单重置
  • 部署MQTT Broker - Mosquitto - -YADA
  • 7年java开发的一些感悟
  • 11.12 NOIP模拟6/多校1 改题记录
  • FFmpeg for Android 图传Web
  • 语法记录
  • Win7 隐藏文件夹盘符
  • DotNetGuide 突破了 9.5K + Star,一份全面的C#/.NET/.NET Core学习、工作、面试指南知识库!
  • 在ec2上部署qwen3-VL-2B模型
  • 【数据结构】第六章启航:图论入门——从零掌握有向图、无向图与简单图
  • 软件工程学习日志2025.11.12
  • NLTK库用法示例:Python自然语言处理入门到实践 - 实践
  • 2025人形机器人产业链全景分析报告:核心技术与市场趋势|附130+份报告PDF、数据、可视化模板汇总下载