【竞赛题目】木块(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,一经查实,立即删除!

相关文章

如何正确的防止服务器被攻击?103.216.153.x

网站服务器被攻击是新建网站常常发生的事情&#xff0c;对于新手来说这也是非常棘手的问题。那么一旦遇到这样的情况&#xff0c;我们需要如何解决呢&#xff1f;怎么才能防止服务器被攻击&#xff0c;怎么保障自己网站信息的安全&#xff0c;如果发现被攻击又该怎么做呢&#…

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

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;…

Java基础面试-hashCode与equals

hashCode hashCode( 的作用是获取哈希码&#xff0c;也称为散列码&#xff0c;它实际上是返回一个int整数。这个哈希码的作用是确定该对象在哈希表中的索引引位置&#xff0c;hashCode0 定义在]DK的Object.java中&#xff0c;Java中的任何类都包含有hashCodel 函数。散列表存储…

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

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

【MySQL】索引和事物

目录 ♫索引 ♪什么是索引 ♪索引的数据结构 ♪索引的使用 ♫事务 ♪什么是事务 ♪事务的特性 ♪事务的使用 ♫索引 ♪什么是索引 索引是存储在磁盘上的一个数据结构&#xff0c;通过索引可以快速地定位到存储在磁盘上的数据。 索引在提高查询速度的同时&#xff0c;还提…

Office Tool Plus免费安装使用Excel

Office Tool Plus 是一个强大且实用的 Office 部署工具&#xff0c;可以很方便地自定义部署 Office2021等版本&#xff0c;其内置迅雷引擎可帮助您更快地下载 Office&#xff0c;当然&#xff0c;你也可以使用 Office Tool Plus 内置的各种小工具或者功能快捷、方便地激活和管理…

时间复杂度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;其中需要检索最…

修改克隆虚拟机的静态ip地址

要修改克隆虚拟机的静态IP地址&#xff0c;您需要在虚拟机操作系统内部进行配置。以下是一般步骤&#xff0c;具体步骤可能因您使用的虚拟化平台和操作系统而有所不同。这里以使用VMware虚拟化平台和Windows操作系统为例&#xff1a; 注意&#xff1a;在更改虚拟机的网络设置之…

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…

python学习笔记4-二分查找

题目链接 一个List对象可以 ‘.bisect(val)’ 获得大于等于val的最小元素这道题目思想值得看一下 from sortedcontainers import SortedList class Solution:def avoidFlood(self, rains: List[int]) -> List[int]:ans [1] * len(rains)l SortedList() # 可以清空池子…

java基础之数组

数组 数组的本质是一个相同数据类型的元素集合。元素是数组的组成部分&#xff0c;数组中每一个元素都可以使用唯一的索引值来访问&#xff0c;这个索引值也可以叫做数组下标。数组是很多集合类的底层存储结构&#xff0c;在了解java集合类之前大家先了解一下数组吧。 数组初始…

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

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

LCR 172.点名

​​题目来源&#xff1a; leetcode题目&#xff0c;网址&#xff1a;LCR 173. 点名 - 力扣&#xff08;LeetCode&#xff09; 解题思路&#xff1a; 二分找出第一个不是递增 1 的位置即可。 解题代码&#xff1a; class Solution { public:int takeAttendance(vector<in…

模板进阶和反向迭代器

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

【Android】关于touch设备TOOL_TYPE_STYLUS

这里通过log来查看触控笔的motionEvent&#xff0c; Overridepublic boolean onTouchEvent(MotionEvent event) {Log.i(tag, "event" event);return true;}Overridepublic boolean onGenericMotionEvent(MotionEvent event) {Log.i(tag, "G event" event…