【问题描述】

棋盘是指一个行和列编号从1~N的NxN的二进制矩阵,当行号和列号之和为偶数时该矩阵对应位置为黑色的(1),否则为白色的(0)。以下图示为N=1、2、3时的棋盘。

給出一个NxN的二进制矩阵,请找出位于该矩阵内的最大尺寸的完整棋盘,以及最大尺寸棋盘的数量(棋盘可以交叠)。

【输入形式】

每个测试用例的第一行是一个正整数N(1<=N<=2000),表示給定矩阵的行数和列数,接下来的N行描述了这个矩阵:每行有N个字符,既可以是“1”(代表黑块),也可以是“0”(代表白块)。矩阵至少包含一个“1”字符。

【输出形式】

输出最大尺寸棋盘的行列的大小,以及最大棋盘的个数,以空格分隔。

【样例输入】

5
00101
11010
00101
01010
11101

【样例输出】

3 3

【提交代码】

(10/10分,C++)

//7.棋盘
#include <iostream>using namespace std;int cs_bo[2001][2001]; //chessboard
int num[2001];         //各尺寸的棋盘的数量
int max_size = 0;      //最大尺寸
void count(int i, int j, int size, int n)
{if (cs_bo[i][j] == 0){return; //当前点为白(不是棋盘左上位置)}if (i + size - 1 > n || j + size - 1 > n) //超出范围{return;}for (int k = 1; k <= size; k++){for (int l = 1; l <= size; l++){if (((k + l) % 2 == 0 && cs_bo[i + k - 1][j + l - 1] == 0)){//行列号之和为偶数的位置为白return;}else if (((k + l) % 2 != 0 && cs_bo[i + k - 1][j + l - 1] == 1)){//、行列号之和为奇数的位置为黑return;}}}num[size] += 1; //size大小的棋盘存在,对应数量+1if (size > max_size){max_size = size; //最大的棋盘}count(i, j, size + 1, n); //以(i,j)为左上位置寻找更大的棋盘
}int main()
{int n;char temp;for (int i = 0; i <= 2000; i++){num[i] = 0;}cin >> n;for (int i = 1; i <= n; i++){for (int j = 1; j <= n; j++){cin >> temp;cs_bo[i][j] = temp - '0';}}for (int i = 1; i <= n; i++){for (int j = 1; j <= n; j++){count(i, j, 1, n); //寻找当前位置能找到的最大的棋盘}}cout << max_size << ' ' << num[max_size];return 0;
}

【程序设计训练】棋盘相关推荐

  1. c语言程序设计五子棋棋盘怎么画,五子棋的棋盘画不出来,求助!!

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 #include #include #define MAX 20 #define TextWidth 200 #define Time1 1 #defin ...

  2. 【程序设计训练】飞行棋

    个人思路仅供参考,如有不足欢迎交流. [问题描述] 大家当年一定都下过飞行棋吧.现在Lele和Yueyue要下的棋和这个很相似,只是更简单一点而已. 棋盘由N个格子组成,分别标记为第0格到第N-1格. ...

  3. python代码怎么练_Python程序设计训练

    一.目的: 1.掌握建立和执行Python文件的方法: 2.掌握if语句实现分支结构的程序设计方法: 3.掌握for和while语句实现循环结构的程序设计方法: 4.掌握函数的定义和使用方法. 二.内 ...

  4. HNU暑假程序设计训练 0419

    目录 题目描述 思路分析 AC代码 深入思考 题目描述 给出一个由n个正整数组成的数组.您的任务是找到给定数组的递增子数组的最大长度. 递增子数组由数组中若干个连续元素组成,且子数组中的每个元素严格地 ...

  5. 程序设计训练课程设计

    目录 前言 1 第1章 数据导入功能设计 1 1.1总体功能说明 1 1.2程序分析 1 1.3主要技术说明 2 1.4主要文件代码和程序说明 2 第2章 统计分析设计 7 2.1总体功能说明 7 2 ...

  6. 【程序设计训练】3-15 公交系统

    问题描述 城市公交系统有一个记录仪,用于记录每个站点的乘客人数的变化情况,例如:x表示到站前公交车上的乘客人数,y表示离站时公交车上的乘客人数,则该记录仪记录的该站的数字为y-x. 对于一辆公交车和n ...

  7. 【程序设计训练】2-12 绩点计算

    问题描述 学校对本科生的成绩施行绩点制(GPA).将学生的实际考分根据不同学科的不同学分按一定的公式进行计算.规定如下: 实际成绩 绩点 90-100 4.0 85-89 3.7 82-84 3.3 ...

  8. 【程序设计训练】公交系统

    个人思路仅供参考,如有不足欢迎交流. [问题描述] 城市公交系统有一个记录仪,用于记录每个站点的乘客人数的变化情况,例如:x表示到站前公交车上的乘客人数,y表示离站时公交车上的乘客人数,则该记录仪记录 ...

  9. HNU程序设计训练 斯诺克台球(屑题)

    目录 题干 分析 代码 题干 "太长不看" [问题描述] 斯诺克台球是一项古老而又时尚的运动,使用长方形球桌,台面四角以及两长边中心位置各有一个球袋,使用的球分为1个白球,15个红 ...

最新文章

  1. 按拼音模糊匹配查询条件的生成类
  2. Wireshark分析实战:某达速递登录帐号密码提取
  3. MongoDB系列:二、MongoDB常用操作练习
  4. 「查缺补漏」巩固你的 RocketMQ 知识体系
  5. 雪城大学信息安全讲义 3.3 提升 Set-UID 程序的安全性
  6. 恭贺《构建高可用Linux服务器》荣获几项殊荣
  7. 通过案例了解puppet创建虚拟资源解决资源冲突问题
  8. 超简单的MySQL菜鸟安装教程
  9. 三维重建2: 地图构建-三角测量
  10. ADPC2-G 希望
  11. mvc 根据模板导出excel,直接导出文件流
  12. 数据结构C语言版稀疏矩阵实验报告,数据结构稀疏矩阵基本运算实验报告..doc
  13. Windows应用商店下载安装Ubuntu
  14. 【WLAN】【软件】MTK芯片方案用户态和内核态通讯方式小结
  15. 秀米svg点击显示另一张图_公众号排版怎么做?点击图片出现另一张图片是怎么弄的?...
  16. iOS 开发笔记-获取某个APP素材
  17. 常用的华为路由器命令
  18. 微软官网服务器dns,域名系统 (DNS)
  19. 【C#】SharpDevelop使用教程,C#写windows下第一个窗口程序,简单粗暴,初学者进,全图文,一看就明白
  20. TextBoxes与TextBoxes++算法详解

热门文章

  1. Docker【部署 02】可视化工具DockerUI和Shipyard安装使用实例
  2. 创业圈里不讲武德,大厂高管也得挨市场的毒打
  3. lay和lied_辨析:lie, lay, lain, lied, laid
  4. Android进程间通讯AIDL使用及问题详解(雷惊风)
  5. MVP模式基本用例开发
  6. IDEA 问题记录-2022
  7. Python中abs()与fabs()的区别
  8. Encoder-Decoder 框架
  9. (load和initialize)不要被你的log迷惑了你对问题的判断
  10. gsm 收发短信 打电话