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

本文共 901 字,大约阅读时间需要 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/

    你可能感兴趣的文章
    python | rlax,一个超强的 强化学习领域 Python 库!
    查看>>
    python | rpyc,一个超实用的 Python 库!
    查看>>
    python | rq,一个无敌的 关于Redis 的Python 库!
    查看>>
    python读取字符串指定位置字符_python要怎么截取指定位置的字符串呢?
    查看>>
    python | scikit-llm,一个神奇的 Python 库!
    查看>>
    python | sentry,一个超酷的 关于错误监控工具 Python 库!
    查看>>
    python | shiv,一个超酷的 打包工具 Python 库!
    查看>>
    python | six,一个神奇的 Python 库!
    查看>>
    Python读取图片的几种方法供net使用
    查看>>
    python | spacy,一个神奇的 Python 库!
    查看>>
    python | sqlmap,一个实用的 Python 库!
    查看>>
    python | sumy,一个超酷的 用于文本摘要的 Python 库!
    查看>>
    python | tiler,一个不可思议的 图像切片重组 Python 库!
    查看>>
    python | tinydb,一个非常厉害的 关于数据库的 Python 库!
    查看>>
    python | tox,一个超强的 自动化测试工具 Python 库!
    查看>>
    python | ttkbootstrap,一个神奇的 Python 库!
    查看>>
    python | unoconv,一个超厉害的 Python 库!
    查看>>
    python | urllib3,一个超强的 Python 库!
    查看>>
    python | webassets,一个超强的 Python 库!
    查看>>
    python | werkzeug,一个不可思议的 Python 库!
    查看>>