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

NxN棋盘问题00:对角线特性

NxN棋盘有如下特性:

### **1. 对角线的数学特性**

(1) 主对角线(左上->右下):

同一主对角线上的所有格子满足 `行号 - 列号 = 常数`。 也就是说同一主对角线上所有节点的 `行号 - 列号`相等。

同一主对角线上的格子满足 `列号 - 行号 = 常数`。 也就是说同一主对角线上所有节点的 `列号 - 行号`相等。

(2) 副对角线(右上->左下):

同一副对角线上的所有格子满足 `行号 + 列号 = 常数`。 也就是说同一副对角线上所有节点`行号 + 列号`相等。

实例代码:

通过主副对角线的特性作为判断条件,打印出输入的棋盘的某个点的主副对角线。

#include <iostream> #include <vector> using namespace std; // 打印一个n x n 的棋盘 void ChessBoardPrint(int n) { cout << endl; for (int row = 0; row < n; ++row) { for (int col = 0; col < n; ++col) { cout << "*" << " "; } cout << endl; } cout << endl; } // 打印输入点的主副对角线 void DiagPrint1(int n, int row, int col) { cout << endl; cout << endl << "method 1 : " << endl; for (int i = 0; i < n; ++i) { for (int j = 0; j < n; ++j) { if (i - j == row - col) { // 主对角线特性是这条线上的所有节点(行号 - 列号)相等 // 打印主对角线"\"是需要使用"\\ " // cout << "\\ " << " " ; cout << "*" << " " ; } else if (i + j == row + col) { // 副对角线特性是这条线上的所有节点(行号 + 列号)相等 cout << "*" << " "; } else { cout << "-" << " "; } } cout << endl; } cout << endl; } void DiagPrint2(int n, int row, int col) { cout << endl << "method 2 : " << endl; for (int i = 0; i < n; ++i) { for (int j = 0; j < n; ++j) { if (j - i == col - row) { cout << "*" << " "; } else if (i + j == row + col) { cout << "*" << " "; } else { cout << "-" << " "; } } cout << endl; } cout << endl; } int main() { int n = 0; cout << "输入一个棋盘的大小(n x n) : "; cin >> n; ChessBoardPrint(n); int row = 0, col = 0; cout << "输入需要查看对角线的某个点(row, col) : "; while (cin >> row >> col) { DiagPrint1(n, row, col); DiagPrint2(n, row, col); cout << "输入需要查看对角线的某个点(row, col) :"; } return 0; }

测试一下:输入棋盘大小,然后输入需要查看的某个点的对角线,主副对角线就根据对角线特性打印出来了。

http://www.jsqmd.com/news/482463/

相关文章:

  • Java Object 类笔记
  • 聚力谱新篇,逐梦新征程!itc保伦股份市场服务部、设计部启动大会圆满举行!
  • React15 - React-Router v3 如何在react15项目中进行路由跳转和数据传递
  • 【JAVA基础09】—— 赋值与三元运算符:从基础到实操的避坑指南
  • python创建env环境的金字教程
  • 中国服务外包杯D6类赛题进展
  • React15 - react-router v3 版本在react v15当中的使用
  • 提升学术成果的利器:9大查重工具全面解析
  • 学术写作必备:9款查重工具详细对比与使用技巧
  • 【稳定EI检索】第二届桥隧建设与工程国际学术会议(BTCE 2026)
  • 论文质量升级指南:9款查重工具精准评测
  • 优化论文质量的实用工具:9款高效查重软件深度测评
  • parser.add_argument(“experiment_dir“, type=str)和parser.add_argument(“--experiment_dir“, type=str)的区别
  • 【HarmonyOS 6】个人中心数据可视化实战
  • PAT 乙级 1113
  • React15 - 在ruducer中以对象映射替代switch语句
  • 第10章 矩阵分解:拆解复杂矩阵,简化工程应用
  • Hadoop生态中的数据生命周期管理技术深度剖析
  • **图神经网络实战:用PyTorch Geometric构建社交关系预测模型**在当前人工
  • UV 使用指南
  • **发散创新:基于Python的伦理黑客实战演练——从漏洞探测到防御加固全流程解
  • AI 工程化实战:5分钟带你快速掌握 Function Calling!
  • React15 - 在redux应用中数据存储位置探讨
  • 魔术橡皮 3.1.17 | 无限次AI生图,AI橡皮,图片AI编辑修改
  • 《C++实战项目-高并发内存池》7.大块内存的申请与释放
  • 实战|AI应用架构师用GNN构建智能客服的意图识别
  • Qt Creator + MSVC 2022 64bit 配置 Dump 文件生成与分析流程
  • IBM助力实现费曼量子模拟愿景
  • 微软在Windows 11中新增Xbox模式
  • Redux - 在ruducer中以对象映射替代switch语句