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

佛山制作网站公司哪家好上海网站域名注册价格

佛山制作网站公司哪家好,上海网站域名注册价格,做爰全过程免费的视频凤凰网站,百度投流题目描述: 我们对八皇后问题进行扩展。 国际象棋中的皇后非常神勇,一个皇后可以控制横、竖、斜线等4个方向(或者说是8个方向),只要有棋子落入她的势力范围,则必死无疑,所以对方的每个棋子都要…

题目描述:

我们对八皇后问题进行扩展。

国际象棋中的皇后非常神勇,一个皇后可以控制横、竖、斜线等4个方向(或者说是8个方向),只要有棋子落入她的势力范围,则必死无疑,所以对方的每个棋子都要小心地躲开皇后的势力范围,选择一个合适的位置放置。如果在棋盘上有两个皇后,则新皇后控制的势力范围与第一个皇后控制的势力范围可以进行叠加,这样随着皇后数量的增加,皇后们控制的范围越来越大,直至控制了棋盘中全部的格子。

现在我们关心的是,如果在 N×N 的棋盘上放入 M 个皇后(M个皇后相互之间不能冲突)控制棋盘中的格子,则共有多少种不同的放置方法?

输入:N (N <= 10)  M (M <= N)

输出:如果将 M 个皇后放入 N×N 的棋盘中可以控制全部棋盘中的格子,则不同的放置方法的数量

测试输入期待的输出时间限制内存限制额外进程
测试用例 1以文本方式显示
  1. 2 1↵
以文本方式显示
  1. 4↵
1秒64M0
测试用例 2以文本方式显示
  1. 3 1↵
以文本方式显示
  1. 1↵
1秒64M0

C++代码 

#include <iostream>
#include <vector>using namespace std;int totalSolutions = 0; // 用于记录不同的放置方法的数量// 检查当前位置是否安全
bool isSafe(int row, int col, const vector<string>& board, int N) {// 检查列for (int i = 0; i < row; ++i) {if (board[i][col] == 'Q') {return false;}}// 检查左上对角线for (int i = row, j = col; i >= 0 && j >= 0; --i, --j) {if (board[i][j] == 'Q') {return false;}}// 检查右上对角线for (int i = row, j = col; i >= 0 && j < N; --i, ++j) {if (board[i][j] == 'Q') {return false;}}return true;
}bool checkControl(const vector<string>& board, int N) {for (int i = 0; i < N; ++i) {for (int j = 0; j < N; ++j) {if (board[i][j] == '.') {// 检查当前空点是否被控制bool controlled = false;// 检查列for (int k = 0; k < N; ++k) {if (board[k][j] == 'Q') {controlled = true;break;}}// 检查行for (int k = 0; k < N; ++k) {if (board[i][k] == 'Q') {controlled = true;break;}}// 检查左上对角线for (int k = i, l = j; k >= 0 && l >= 0; --k, --l) {if (board[k][l] == 'Q') {controlled = true;break;}}// 检查右上对角线for (int k = i, l = j; k >= 0 && l < N; --k, ++l) {if (board[k][l] == 'Q') {controlled = true;break;}}// 检查左下对角线for (int k = i, l = j; k < N && l >= 0; ++k, --l) {if (board[k][l] == 'Q') {controlled = true;break;}}// 检查右下对角线for (int k = i, l = j; k < N && l < N; ++k, ++l) {if (board[k][l] == 'Q') {controlled = true;break;}}if (!controlled) {// 如果有任何空点没有被控制,则返回falsereturn false;}}}}// 所有空点都被控制,返回truereturn true;
}// 递归解决问题
void solveNQueensUtil(int row, int N, int M, vector<string>& board) {if (row == N) {if (M == 0 && checkControl(board, N)) {totalSolutions++; // 找到一个解决方案}return;}// 尝试在当前行的每一列放置皇后for (int i = 0; i < N; ++i) {if (isSafe(row, i, board, N)) {board[row][i] = 'Q'; // 放置皇后solveNQueensUtil(row + 1, N, M - 1, board); // 递归到下一行board[row][i] = '.'; // 回溯,移除皇后}}// 如果当前行不放置皇后,也递归到下一行solveNQueensUtil(row + 1, N, M, board);
}// 解决N皇后问题
int solveNQueens(int N, int M) {vector<string> board(N, string(N, '.'));solveNQueensUtil(0, N, M, board);return totalSolutions;
}int main() {int N, M;cin >> N >> M;cout <<  solveNQueens(N, M) << endl;return 0;
}

http://www.yayakq.cn/news/999489/

相关文章:

  • 网站搭建需要服务器吗怎样优化网站 优帮云
  • 营销单页模板网站学网站开发的总结
  • 广州市天河区住房和建设局网站dz网站模板
  • 保定网站 优建网站到底需要多少钱
  • 电子商务网站建设报告分析国外企业招聘网站
  • 农业网站怎么做百度推广应用软件下载app
  • 商城网站做推广方案淘宝网页设计价格
  • 济南网站seo怎么把服务器做网站
  • 哈尔滨专门做网站中投建设官方网站
  • 专业定制网站系统网站建设国培心得体会
  • 网站建设江苏题材挖掘机网站怎么做
  • 企业网站内页设计电子商务网站有哪些和网址
  • 视频网站开发需求分析网站数据中心的建设
  • 网站建设与管理教案娄底营销型网站建设
  • 成都建立网站的公司网站推广普通话主题手抄报图片大全
  • 网站上传空间下一步wordpress列表页
  • 做流量的网站WordPress adsen
  • 深圳高端建设网站苏州网站建设网站建设
  • 公司做网站费用和人员配备app生成器手机版
  • 网站做跳转链接成都网站开发建设公司
  • 导航站wordpress网站谁做的比较好看
  • 手机怎样做网站中企邮箱登录入口
  • 个人做论坛网站网页设计与制作大纲
  • 沈阳建站费用wordpress连接ftp
  • 做代刷网站赚钱不阿里云备案个人可以做网站吗
  • 营销网站建设是什么重庆网站设计工作室
  • 电子商务的网站建设分析安微网站建设
  • 完整网站开发需要多久商业空间设计师岗位职责
  • 海南网站建设监理国内专业的室内设计网站
  • app制作过程和网站一样吗c2c网站建设