博客
关于我
poj 1321(回溯)
阅读量:793 次
发布时间:2023-03-03

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

类似于八皇后问题,但棋子数不等于行数,也不需要考虑对角线的情况。以下是解决方案:

#include 
#include
#include
#include
using namespace std;
const int maxn = 10;
string ss[maxn];
bool vis[maxn];
int n, m;
int tot = 0;
void dfs(int cur, int num) {
if (num == n) {
if (cur == m)
tot++;
return;
}
for (int i = 0; i < n; i++) {
if (!vis[i] && ss[num][i] == '#') {
vis[i] = 0;
dfs(cur + 1, num + 1);
}
}
dfs(cur, num + 1);
}
int main() {
while (~scanf("%d%d", &n, &m)) {
if (n == -1 && m == -1)
break;
memset(vis, 0, sizeof(vis));
for (int i = 0; i < n; i++) {
cin >> ss[i];
}
tot = 0;
dfs(0, 0);
printf("%d\n", tot);
}
return 0;
}

代码逻辑解析:

  • 定义常量、数组和变量
  • 使用深度优先搜索(DFS)进行递归求解
  • 主函数进行输入处理和结果输出
  • 优化思路:

    • 采用递归深度优化方式
    • 利用数组标记已访问状态
    • 通过条件判断确保棋子不超出棋盘范围
    • 最终计数满足条件的解数

    转载地址:http://nuxfk.baihongyu.com/

    你可能感兴趣的文章
    R2的版本由来
    查看>>
    PHP获取图片宽度高度、大小尺寸、图片类型、用于布局的img属性
    查看>>
    PHP获取当前文件的绝对路径
    查看>>
    PHP获取当前时间、时间戳的各种格式写法汇总
    查看>>
    PHP获取当前页面的完整URL
    查看>>
    php获取数据库中数据生成json,中文乱码问题的解决方案
    查看>>
    php获取文件夹中文件的两种方法
    查看>>
    PHP获取日期的一些方法总结
    查看>>
    R2学习记录
    查看>>
    PHP获取本周的每一天的时间
    查看>>
    php获取用户真实IP和防刷机制
    查看>>
    php获取网页内容的三种方法
    查看>>
    R-CNN算法优化策略
    查看>>
    PHP规范PSR0和PSR4的理解
    查看>>
    php解析ipa包,获取logo
    查看>>
    php设置cookie,在js中如何获取
    查看>>
    php设置socket超时时间
    查看>>
    php设计模式 萨莱 pdf,PHP设计模式 建造者模式
    查看>>
    PHP设计模式之----观察者模式
    查看>>
    php设计模式之装饰器模式
    查看>>