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

判断旗帜是否符合ISO新标准

背景介绍

在全球化的背景下,不同国家的旗帜设计需要满足某些国际标准以便于统一化和规范化。ISO(国际标准化组织)提出了一项新规定,要求国家旗帜在设计时遵循一些规则,特别是棋盘状设计中的颜色分布规则。比如,每一行的颜色需要一致,同时相邻两行的颜色不能相同。

这不仅仅是审美上的考虑,还与旗帜在不同条件下的可识别性有关。例如:

  • 运动赛事:旗帜在快速飘动或远距离观看时,颜色分布的清晰性非常重要。
  • 国际比赛与协议场合:为了避免混淆,旗帜的颜色分布需要规则化,便于识别和区分。

我们需要设计一个程序,帮助各国快速验证旗帜设计是否符合ISO新标准。


问题描述

根据新的ISO标准,每个国家的旗帜应具有一个大小为 $n \times m$ 的棋盘状区域,每个方块的颜色应为 0 到 9 的一种颜色。旗帜需要满足以下规则:

  1. 每一行的颜色应该完全相同。
  2. 相邻两行的颜色应不同。

给定一个旗帜的描述,判断它是否符合以上规则。如果符合,输出 YES,否则输出 NO


输入格式

  1. 第一行包含两个整数 $n$ 和 $m$,分别表示旗帜的行数和列数,$1 \leq n, m \leq 100$。
  2. 接下来的 $n$ 行,每行包含 $m$ 个字符,每个字符是 0-9 的数字,表示该行每个方块的颜色。

输出格式

输出 YES 如果旗帜符合新ISO标准,否则输出 NO


示例

示例 1

输入:

3 3
000
111
222

输出:

YES

示例 2

输入:

3 3
000
000
111

输出:

NO

示例 3

输入:

3 3
000
111
002

输出:

NO

实际问题的应用场景

  1. 国家或区域旗帜的设计

    • 当一个国家设计新旗帜时,可以用程序对旗帜草图进行快速验证,避免不符合标准的设计通过。
  2. 视觉识别优化

    • 一些智能系统(如机器人识别国家旗帜)会依赖于旗帜的设计规则。这样的规则有助于机器在复杂环境中快速辨认。
  3. 赛事管理中的旗帜检测

    • 国际体育赛事中,旗帜经常被用作国家身份的象征。通过程序验证,可以避免错误使用非合规旗帜。
  4. 教育用途

    • 在编程教学中,这样的题目可以用来帮助学生理解字符串处理和规则校验的基本逻辑,进一步联系实际生活问题。

Python代码实现

以下是题目对应的 Python 实现代码:

def main():# 读取输入的旗帜尺寸n, m = map(int, input().split())# 初始化变量current_color = None  # 当前行的颜色is_valid = True  # 是否符合规则# 遍历每一行for _ in range(n):current_line = input().strip()  # 读取当前行# 检查规则1:相邻两行颜色是否相同if current_color == current_line[0] or not is_valid:is_valid = Falsebreak# 更新当前行的颜色current_color = current_line[0]# 检查规则2:当前行的颜色是否一致if any(c != current_color for c in current_line):is_valid = Falsebreak# 根据结果输出if is_valid:print("YES")else:print("NO")if __name__ == "__main__":main()

代码详解

  1. 输入处理:

    • 使用 map(int, input().split()) 读取旗帜的行数和列数。
    • 每次读取一行颜色数据并去除多余空格。
  2. 规则1检查:

    • 使用 current_color 记录上一行的颜色,如果当前行与上一行的颜色相同,则标记为不符合规则。
  3. 规则2检查:

    • 使用列表推导式 any(c != current_color for c in current_line) 检查当前行是否所有颜色一致。
  4. 结果输出:

    • 根据 is_valid 标志,输出 YESNO

测试结果

测试用例1

输入:

3 3
000
111
222

输出:

YES

测试用例2

输入:

3 3
000
000
111

输出:

NO

测试用例3

输入:

3 3
000
111
002

输出:

NO

总结

这道题不仅考察了字符串处理与规则校验的能力,同时也展示了编程如何用于解决实际问题,例如旗帜设计和图案验证。代码逻辑清晰简单,时间复杂度为 $O(n \cdot m)$,适合新手进行练习。

扩展思考

  • 你能设计更高效的算法来检测这种旗帜问题吗?
  • 如果增加其他约束条件,比如列的颜色也要一致,该如何调整程序?

希望这篇文章对你理解问题解决的实际应用有所帮助!如果觉得有帮助,请点赞支持~


相关文章:

判断旗帜是否符合ISO新标准

背景介绍 在全球化的背景下,不同国家的旗帜设计需要满足某些国际标准以便于统一化和规范化。ISO(国际标准化组织)提出了一项新规定,要求国家旗帜在设计时遵循一些规则,特别是棋盘状设计中的颜色分布规则。比如&#x…...

海量数据存储实现方案设计1-mycat版

目的 这里使用mycat为例子说明方案设计思路(仅个人学习、思考笔记)。主要尝试解决海量数据存储、动态不停机扩容问题,不再受限于单库、单表、单机等。 mycat简述 mycat 主要以中间件代理的方式,不侵入工程代码来实现分库分表&a…...

Elasticsearch检索之三:官方推荐方案search_after检索实现(golang)

Elasticsearch8.17.0在mac上的安装 Kibana8.17.0在mac上的安装 Elasticsearch检索方案之一:使用fromsize实现分页 快速掌握Elasticsearch检索之二:滚动查询(scrool)获取全量数据(golang) 1、search_after检索 在前面的文章介绍了fromsize的普通分页…...

hot100_238. 除自身以外数组的乘积

给你一个整数数组 nums,返回 数组 answer ,其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。 题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。 请 不要使用除法,且在 O(n) 时间复杂度…...

软件测试基础详解

🍅 点击文末小卡片,免费获取软件测试全套资料,资料在手,涨薪更快 “尽早的介入测试,遇到问题的解决成本就越低” 随着软件测试技术的发展,测试工作由原来单一的寻找缺陷逐渐发展成为预防缺陷,…...

MySQL 备份方案设计之准备事项

MySQL 备份方案设计之准备事项 文章目录 MySQL 备份方案设计之准备事项1.选择合适的备份工具2.其他需要考虑的因素推荐资料 1.选择合适的备份工具 工欲善其事,必先利其器。 目前市面上的 MySQL 备份工具也有很多,整理如下(仅供参考&#xff…...

《计算机网络A》单选题-复习题库解析-最终

目录 151、信道容量计算公式“CW*log2(1S/N)”中,“S/N”表示( ) 152、下面哪一种编码方式不包含同步时钟信息( ) 153、子网划分的根本目的是( ) 154、在传统以太…...

向 SwiftUI 视图注入 managedObjectContext 环境变量导致 Xcode 预览(Preview)崩溃的解决

问题现象 从 SwiftUI 诞生到现在,我们这些秃头码农们早已都习惯了在 Xcode 预览中调试 App 界面了。不过,对于某些场景下向 SwiftUI 视图传递 managedObjectContext 环境变量(environment)总是会导致 Xcode 预览崩溃,这是怎么回事呢? 如上图所示,甚至我们将一个常驻内存…...

Ruby 数据类型

Ruby 数据类型 Ruby,作为一种动态、开放源代码的编程语言,以其简洁明了的语法和强大的功能而闻名。在Ruby中,数据类型是编程的核心组成部分,它们决定了变量可以存储的信息种类以及可以对这些信息执行的操作。Ruby是一种类型安全的…...

复合机器人正以其高效、精准、灵活的特点,逐渐在汽车装配线上崭露头角

随着全球汽车制造业的快速发展,汽车装配线已成为衡量企业生产效率和技术水平的重要标准。传统的装配方式往往依赖于大量的人工操作,这不仅效率低下,还面临着质量不稳定、安全隐患等问题。然而,随着智能科技的飞速进步,…...

Docker + JMeter + InfluxDB + Grafana搭建压测可视化实时监控

一:简单介绍 为了解决上述问题,必须要请出了 InfluxDB + Grafana : InfluxDB :持续型数据库,有时间戳组件,以时间的形式去存储数据; Grafana :一款采用 Go 语言编写的开源应用,主要用于大规模指标数据的可视化展现,是网络架构和应用分析中最流行的时序数据展示工具…...

leetcode 2658. 网格图中鱼的最大数目

题目如下 数据范围 使用并查集来做这道题。 其实按照题目的意思就是让我们求每一个联通的水域可以捞到的最大权值。 我们可以从前往后遍历这个二维数组只需要判断前一个水域和上一个水域是否和当前的(i, j)联通如果有则合并水域,同时用一个weight数组保存每一个联…...

Java 集合 Collection、List、Set

一. Collection 单列集合 1. Collection代表单列集合,每个元素(数据)只包含一个值 2. Collection集合特点 ① List系列集合:添加的元素是有序、可重复、有索引。 ArrayList、LinekdList:有序、可重复,有索引 ② Set系列集合&…...

报错:nginx [emerg] open() etcnginxnginx.conf failed (2 No such file or directory)

报错:nginx: [emerg] open() “/etc/nginx/nginx.conf” failed (2: No such file or directory) 背景:在创建nginx容器时,想把宿主机上的某一目录挂载到容器的/etc/nginx路径,报错"/etc/nginx/nginx.conf" failed (2:…...

基于AI的运维资源调度:效率与智能的双重提升

在现代运维场景中,随着系统复杂性和服务规模的不断增长,传统的资源调度方式已无法满足高效、动态和精准的需求。AI技术的引入为资源调度带来了新的解决方案,通过智能算法和数据驱动,实现了资源分配的自动化与优化。本文将详细探讨…...

自动化办公 | 根据成绩进行自动评级

今天我们将介绍一个常见的自动化办公需求:根据成绩自动评级。通过这篇文章,我们将介绍如何利用Python进行自动化办公,将表格中的成绩根据预定的规则进行评级,并生成一个新的带评级信息的表格。 需求背景 我们有一个表格&#xf…...

纯血鸿蒙ArkUI线性布局详解

线性布局说明 线性布局(LinearLayout)是开发中最常用的布局,通过线性容器Row和Column构建。线性布局是其他布局的基础,其子元素在线性方向上(水平方向和垂直方向)依次排列。线性布局的排列方向由所选容器组…...

小程序组件 —— 22 组件案例 - 轮播区域绘制

这一节我们实现轮播图最外层的盒子,也就是把轮播图的最外层搭好,先不给轮播图添加图片,因为图片属于新的组件,组件里面有一些知识点,需要单独分开讲; 回顾一下,在进行传统网页开发时&#xff0…...

如何判断一个学术论文是否具有真正的科研价值?ChatGPT如何提供帮助?

目录 1.创新性与学术贡献的超级加分✔ 2.科研过程中的各个环节—从0到1✔ 3.创新性与理论深度的完美结合✔ 4.论证与写作的清晰性✔ 5.数据整理和文献回顾——效率与精准并存✔ 6.创新性要求辅助✔ 总结 宝子们,学术论文写作的旅程是不是感觉像是走进了迷雾森…...

【置顶】测试学习笔记整理

一、测试开发体系介绍 1.软件测试概念 (1)【理论】软件测试基础概念:软件测试概念、作用、原则、对象,软件缺陷、测试用例 (2)【理论】软件开发流程扫盲:敏捷开发(XP、SCRUM&#…...

XCTF-web-easyupload

试了试php,php7,pht,phtml等,都没有用 尝试.user.ini 抓包修改将.user.ini修改为jpg图片 在上传一个123.jpg 用蚁剑连接,得到flag...

Cilium动手实验室: 精通之旅---20.Isovalent Enterprise for Cilium: Zero Trust Visibility

Cilium动手实验室: 精通之旅---20.Isovalent Enterprise for Cilium: Zero Trust Visibility 1. 实验室环境1.1 实验室环境1.2 小测试 2. The Endor System2.1 部署应用2.2 检查现有策略 3. Cilium 策略实体3.1 创建 allow-all 网络策略3.2 在 Hubble CLI 中验证网络策略源3.3 …...

Qt Http Server模块功能及架构

Qt Http Server 是 Qt 6.0 中引入的一个新模块,它提供了一个轻量级的 HTTP 服务器实现,主要用于构建基于 HTTP 的应用程序和服务。 功能介绍: 主要功能 HTTP服务器功能: 支持 HTTP/1.1 协议 简单的请求/响应处理模型 支持 GET…...

Neo4j 集群管理:原理、技术与最佳实践深度解析

Neo4j 的集群技术是其企业级高可用性、可扩展性和容错能力的核心。通过深入分析官方文档,本文将系统阐述其集群管理的核心原理、关键技术、实用技巧和行业最佳实践。 Neo4j 的 Causal Clustering 架构提供了一个强大而灵活的基石,用于构建高可用、可扩展且一致的图数据库服务…...

PL0语法,分析器实现!

简介 PL/0 是一种简单的编程语言,通常用于教学编译原理。它的语法结构清晰,功能包括常量定义、变量声明、过程(子程序)定义以及基本的控制结构(如条件语句和循环语句)。 PL/0 语法规范 PL/0 是一种教学用的小型编程语言,由 Niklaus Wirth 设计,用于展示编译原理的核…...

c#开发AI模型对话

AI模型 前面已经介绍了一般AI模型本地部署,直接调用现成的模型数据。这里主要讲述讲接口集成到我们自己的程序中使用方式。 微软提供了ML.NET来开发和使用AI模型,但是目前国内可能使用不多,至少实践例子很少看见。开发训练模型就不介绍了&am…...

什么?连接服务器也能可视化显示界面?:基于X11 Forwarding + CentOS + MobaXterm实战指南

文章目录 什么是X11?环境准备实战步骤1️⃣ 服务器端配置(CentOS)2️⃣ 客户端配置(MobaXterm)3️⃣ 验证X11 Forwarding4️⃣ 运行自定义GUI程序(Python示例)5️⃣ 成功效果![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/55aefaea8a9f477e86d065227851fe3d.pn…...

推荐 github 项目:GeminiImageApp(图片生成方向,可以做一定的素材)

推荐 github 项目:GeminiImageApp(图片生成方向,可以做一定的素材) 这个项目能干嘛? 使用 gemini 2.0 的 api 和 google 其他的 api 来做衍生处理 简化和优化了文生图和图生图的行为(我的最主要) 并且有一些目标检测和切割(我用不到) 视频和 imagefx 因为没 a…...

tomcat入门

1 tomcat 是什么 apache开发的web服务器可以为java web程序提供运行环境tomcat是一款高效,稳定,易于使用的web服务器tomcathttp服务器Servlet服务器 2 tomcat 目录介绍 -bin #存放tomcat的脚本 -conf #存放tomcat的配置文件 ---catalina.policy #to…...

深度学习之模型压缩三驾马车:模型剪枝、模型量化、知识蒸馏

一、引言 在深度学习中,我们训练出的神经网络往往非常庞大(比如像 ResNet、YOLOv8、Vision Transformer),虽然精度很高,但“太重”了,运行起来很慢,占用内存大,不适合部署到手机、摄…...