【竞赛题目】木块(C语言详解)

" 木块 "【第二届全国高校计算机技能竞赛】里的一道竞赛题目,博主觉得很新颖想推荐给大家;

题目描述

为了提高词汇量,小理得到了一套四块木块,其中每块都是一个立方体六面各写着一个字母。他正在通过将木块排成一排使得木块顶部的字母拼出单词来学习拼写。

给定小理的四个木块上的字母,以及他想拼写的单词列表,请确定列表中哪些单词可被他使用木块成功拼写

输入

输入共 N+5 行。

输入的第一行包含 N,为小理想要拼写的单词数。

接下来的 四行 每行包含一个带有六个大写字母的字符串,表示小理的一个块的六个侧面上的字母。

接下来的 行包含小理想要拼写的 N 个单词。其中每一个的长度在 1 到 4 个大写字母之间。

输出

对于小理列表中的每个单词,如果他能够使用木块拼写,则输出 YES ,否则输出 NO

样式输入:

6
MOOOOO
OOOOOO
ABCDEF
UVWXYZ
COW
MOO
ZOO
MOVE
CODE
FARM

样式输出:

YES
NO
YES
YES
NO
NO

提示:

对于 100% 的数据,保证 1 <= N <= 10

在本例中,小理可以拼写 "COW"、"ZOO"和"MOVE"。不幸的是,他不能拼写 "MOO",因为唯一带有字母 "M" 的木块也不能用于 "MOO"。他不能拼写 "FARM",因为没有字母 " R " 的木块。他不能拼写 "CODE",因为 "C""E""D"都属于同一个木块。

题目就是这样,刚看完的小伙伴会有点绕,题目的意思呢就是让 我们写单词让四个有六个面的木块
组,然后在判断能不能组成功就OK了

思路解析:

我们有 四个木块每块有六个字母,我们写 n 单词判断能不能用木块组成功;
我们可以先将单词存再一个数组里面,然后让木块去消灭它,这听起来有点抽象;
首先 单词并不好存,但是我们可以把 字母化成数字去进行存储,存储成功就让数组内的值 ++ ,然 后让木块去消灭,木块里的单词对应数组里的值让其 - - ,最后在 判断数组里的值看看有没有消灭干净

思路实现:

int main()
{int n = 0;scanf("%d", &n);  //要写的单词个数char block[4][7] = { 0 };int i = 0;for (i = 0; i < 4; i++){scanf("%s", &block[i]);  //输入木块}char word[10][5] = { 0 };for (i = 0; i < n; i++){scanf("%s", &word[i]);	  //输入单词}printf("\n");for (i = 0; i < n; i++){if (search(block, word[i]))  //检索{printf("YES\n");}else{printf("NO\n");}}return 0;
}

这是主函数框架,我们先给木块,单词赋值,然后再加以判断,如果函数返回 非0 就打印 YES ,反之打印 NO;

然后我们要实现 检索函数 search;
int search(char block[4][7], char word[5])
{int count[26] = { 0 };int i = 0;int len = strlen(word);for (i = 0; i < len; i++){count[word[i] - 'A']++;  //存进单词}int j = 0;for (i = 0; i < 4; i++){for (j = 0; j < 6; j++){count[block[i][j] - 'A']--;   //消灭单词--每行只能消灭一个if (count[block[i][j] - 'A'] >= 0){break;}}}for (i = 0; i < 26; i++)  //遍历数组看看有没有消灭干净{if (count[i] > 0){return 0;}}return 1;
}

我们定义 count 数组来表示存储单词,我们将字母减去 ' A ',即可变为相应的数字,我们先将字母存进去,将对应的下标对应的值 ++,然后再让木块去数组里面消灭每个木块最多只能消灭一个(因为是四个木块组成单词,所以一个木块只能提供一个单词),让木块里的字母对应的下标里的值 — —,然后再检查 count 数组里的值,如果出现大于0的值就说明没消灭干净也就是木块组成不了返回 0 ,反之返回 1

我们用用例试一下:
可以看到也是没有任何问题的;
这个题目我觉得挺新颖的,大家可以看一下,学习一下;

源代码:

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<string.h>int search(char block[4][7], char word[5])
{int count[26] = { 0 };int i = 0;int len = strlen(word);for (i = 0; i < len; i++){count[word[i] - 'A']++;  //存进单词}int j = 0;for (i = 0; i < 4; i++){for (j = 0; j < 6; j++){count[block[i][j] - 'A']--;   //消灭单词--每行只能消灭一个if (count[block[i][j] - 'A'] >= 0){break;}}}for (i = 0; i < 26; i++)  //遍历数组看看有没有消灭干净{if (count[i] > 0){return 0;}}return 1;
}int main()
{int n = 0;scanf("%d", &n);  //要写的单词个数char block[4][7] = { 0 };int i = 0;for (i = 0; i < 4; i++){scanf("%s", &block[i]);  //输入木块}char word[10][5] = { 0 };for (i = 0; i < n; i++){scanf("%s", &word[i]);	  //输入单词}printf("\n");for (i = 0; i < n; i++){if (search(block, word[i]))  //检索{printf("YES\n");}else{printf("NO\n");}}return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/104482.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

神经网络中卷积和池化的区别

1、什么叫卷积&#xff1f; 卷积层是用一个固定大小的矩形区去席卷原始数据&#xff0c;将原始数据分成一个个和卷积核大小相同的小块&#xff0c;然后将这些小块和卷积核相乘输出一个卷积值&#xff08;注意这里是一个单独的值&#xff0c;不再是矩阵了&#xff09;。 卷积的…

YOLOv5算法改进(11)— 主干网络介绍(MobileNetV3、ShuffleNetV2和GhostNet)

前言:Hello大家好,我是小哥谈。主干网络通常指的是深度学习中的主干模型,通常由多个卷积层和池化层组成,用于提取输入数据的特征。在训练过程中,主干网络的参数会被不断优化以提高模型的准确性。YOLOv5算法中的主干网络可以有多种替换方案,为了后面讲解的方便,本篇文章就…

CVE-2017-12615 Tomcat远程命令执行漏洞

漏洞简介 2017年9月19日&#xff0c;Apache Tomcat官方确认并修复了两个高危漏洞&#xff0c;漏洞CVE编号&#xff1a;CVE-2017-12615和CVE-2017-12616&#xff0c;其中 远程代码执行漏洞&#xff08;CVE-2017-12615&#xff09; 当 Tomcat 运行在 Windows 主机上&#xff0c;…

加持智慧医疗,美格智能5G数传+智能模组让就医触手可及

智慧医疗将云计算、物联网、大数据、AI等新兴技术融合赋能医疗健康领域&#xff0c;是提高医疗健康服务的资源利用效率&#xff0c;创造高质量健康医疗的新途径。《健康中国2030规划纲要》把医疗健康提升到了国家战略层面&#xff0c;之后《“十四五”全面医疗保障规划》等一系…

时间复杂度O(40n*n)的C++算法:修改图中的边权

本篇源码下载 点击下载 1.12.1. 题目 给你一个 n 个节点的 无向带权连通 图&#xff0c;节点编号为 0 到 n - 1 &#xff0c;再给你一个整数数组 edges &#xff0c;其中 edges[i] [ai, bi, wi] 表示节点 ai 和 bi 之间有一条边权为 wi 的边。 部分边的边权为 -1&#xff08…

CANdb++数据库操作

CANdb数据库操作 创建工程结构文件夹新建数据库&总线描述节点设置节点创建配置Message属性信号设置节点收发信号 环境变量配置一致性检验数据库工程XVehicle.dbc导入工程文件总结 创建工程结构文件夹 在文件夹X-Vehicle-1下&#xff0c;建立工程目录文件夹CANdb&#xff0…

CustomNavBar 自定义导航栏视图

1. 创建偏好设置键 CustomNavBarTitlePreferenceKey.swift import Foundation import SwiftUI//State private var showBackButton: Bool true //State private var title: String "Title" //"" //State private var subtitle: String? "SubTitl…

相似性搜索:第 1 部分- kNN 和倒置文件索引

图片来源&#xff1a;维亚切斯拉夫叶菲莫夫 一、说明 SImilarity 搜索是一个问题&#xff0c;给定一个查询的目标是在所有数据库文档中找到与其最相似的文档。 在数据科学中&#xff0c;相似性搜索经常出现在NLP领域&#xff0c;搜索引擎或推荐系统中&#xff0c;其中需要检索最…

C# OpenVINO Cls 图像分类

效果 耗时 class idbrown_bear, score0.86 preprocess time: 0.00ms infer time: 2.72ms postprocess time: 0.02ms Total time: 2.74ms项目 代码 using OpenCvSharp; using Sdcb.OpenVINO; using Sdcb.OpenVINO.Natives; using System; using System.Diagnostics; using Sys…

地产三维实景vr展示的功能及特点

随着科技的不断发展&#xff0c;VR(虚拟现实)技术也越来越成熟。VR技术的广泛应用&#xff0c;已经逐渐渗透到各个领域&#xff0c;其中引人注目的就是虚拟展馆。虚拟展馆是一种利用VR技术构建的线上展示空间&#xff0c;让观众可以在家中就能参观展览&#xff0c;带来了极大地…

模板进阶和反向迭代器

文章目录 模板非类型模板参数模板特化函数模板特化类模板特化 模板分离编译 反向迭代器 模板 非类型模板参数 模板参数分类类型形参与非类型形参。 类型形参即&#xff1a;出现在模板参数列表中&#xff0c;跟在class或者typename之类的参数类型名称。 非类型形参&#xff0c…

基于CodeFormer实现图片模糊变清晰,去除马赛克等效果

前言 CodeFormer是一种基于AI技术深度学习的人脸复原模型&#xff0c;由南洋理工大学和商汤科技联合研究中心联合开发。该模型通过结合了VQGAN和Transformer等技术&#xff0c;可以通过提供模糊或马赛克图像来生成清晰的原始图像。可以实现老照片修复、照片马赛克修复、黑白照…

【ARM Coresight 系列文章 9.1 -- ITM 仪器化跟踪宏单元详细介绍】

文章目录 1.1 ITM 介绍1.1.1 ITM 功能介绍1.1.2 Cortex-M ITM 的地址范围1.2 ITM 使用1.2.1 ITM 寄存器介绍1.2.2 Cortex-M7 ITM 代码示例1.2.3 Cortex-M33 ITM 代码示例1.1 ITM 介绍 在debug 调试阶段通常都是使用 printf(printk) 来进行进行 log 输出,然后定位问题。那么如…

排序算法-希尔排序法(ShellSort)

排序算法-希尔排序法&#xff08;ShellSort&#xff09; 1、说明 我们知道当原始记录的键值大部分已排好序的情况下插入排序法非常有效&#xff0c;因为它不需要执行太多的数据搬移操作。希尔排序法是D.L.Shell在1959年7月发明的一种排序法&#xff0c;可以减少插入排序法中数…

Java IO流

IO 即 Input / Output &#xff0c;输入输出流。IO流在Java中分为输入流和输出流&#xff0c;而根据数据的处理方式又分为字节流和字符流。 Java IO 流的 40 多个类都是从如下 4 个 抽象类基类中派生出来的。 InputStream /Reader : 所有的输入流的基类&#xff0c;前者是字节…

论文阅读之《Learn to see in the dark》

Learning to See in the Dark-CVPR2018 Chen ChenUIUC&#xff08;伊利诺伊大学厄巴纳-香槟分校&#xff09; Qifeng Chen, Jia Xu, Vladlen Koltun Intel Labs(英特尔研究院) 文章链接&#xff1a;https://arxiv.org/pdf/1805.01934.pdfhttps://arxiv.org/pdf/1805.01934.p…

Android Studio展示Activty生命周期

前言 本文章以及之后文章的程序版本使用Android Studio 2022.3.1 Patch 1 版本编辑&#xff0c;使用语言为java&#xff0c;最低支持API 27 Android 8.1&#xff0c;构建工具版本如下&#xff1a; 本文章主要是介绍Activty跳转和删除&#xff0c;以备后续使用&#xff0c;所以就…

计算机的字符与编码集

文章目录 前言一、字符编码集的历史1.ASCII码2.Extended ASCII码3.字符编码集的国际化 二、中文编码集 前言 今天给大家介绍计算机的字符与编码集&#xff0c;分为两部分&#xff1a;字符编码集的历史、中文编码集。 一、字符编码集的历史 这部分包含三个板块内容&#xff1a…

【通信系列 5 -- HTTPS 介绍】

文章目录 1.1 HTTPS链接网址1.1.1 HTTPS 产生背景1.1.2 HTTPS工作内容1.1.3 SSL/TLS1.1.4 TLS 的命名规范1.1.5 TLS 加密算法1.1.6 分组模式1.1.7 摘要算法1.1.8 非对称加密1.1.9 CA认证 1.2 openssl1.2.1 RSA 签名验签 1.1 HTTPS链接网址 HTTP 是一种 超文本传输协议(Hyperte…

DOCKER本地仓库

概述 随着docker的应用越来越多&#xff0c;安装部署越来越方便&#xff0c;批量自动化的镜像生成和发布都需要docker仓库的本地化应用。 试用了docker的本地仓库功能&#xff0c;简单易上手&#xff0c;记录下来以备后用。 环境 centos&#xff1a;CentOS release 7.0 (F…