华为OD机试(C卷,100分)- 单词接龙

embedded/2024/11/14 21:07:45/

(C卷,100分)- 单词接龙

题目描述

单词接龙的规则是:
可用于接龙的单词首字母必须要前一个单词的尾字母相同;
当存在多个首字母相同的单词时,取长度最长的单词,如果长度也相等,则取字典序最小的单词;已经参与接龙的单词不能重复使用。
现给定一组全部由小写字母组成单词数组,并指定其中的一个单词作为起始单词,进行单词接龙,
请输出最长的单词串,单词串是单词拼接而成,中间没有空格。

输入描述

输入的第一行为一个非负整数,表示起始单词在数组中的索引K,0 <= K < N ;
输入的第二行为一个非负整数,表示单词的个数N;
接下来的N行,分别表示单词数组中的单词。
备注:
单词个数N的取值范围为[1, 20];
单个单词的长度的取值范围为[1, 30];

输出描述

输出一个字符串,表示最终拼接的单词串。
用例

输入 0
6
word
dd
da
dc
dword
d
输出 worddwordda
说明 先确定起始单词word,再接以d开头的且长度最长的单词dword,剩余以d开头且长度最长的有dd、da、dc,则取字典序最小的da,所以最后输出worddwordda。

输入 4
6
word
dd
da
dc
dword
d
输出 dwordda
说明 先确定起始单词dword,剩余以d开头且长度最长的有dd、da、dc,则取字典序最小的da,所以最后输出dwordda。

题目解析

逻辑题,主要考察数组操作,如数组元素删除,数组自定义排序。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_WORD 20
#define MAX_WORD_LEN 30
typedef struct{char word[MAX_WORD_LEN];int used;
}WORD;
int cmp(const void *a,const void *b){WORD *wa=(WORD*)a;WORD *wb=(WORD*)b;if(strlen(wa->word)!=strlen(wb->word))return strlen(wb->word)-strlen(wa->word);//按长度从大到小排序return strcmp(wa->word,wb->word);
}
int main(){int k,n;scanf("%d",&k);//起始单词索引scanf("%d",&n);char res[MAX_WORD_LEN*MAX_WORD]={0};WORD words[MAX_WORD];for(int i=0;i<n;i++){scanf("%s",words[i].word);words[i].used=0;}strcpy(res,words[k].word);words[k].used=1;qsort(words,n,sizeof(WORD),cmp);for(int i=0;i<n-1;i++){int found=0;char lastW=res[strlen(res)-1];for(int j=0;j<n;j++){if(words[j].used==0&&lastW==words[j].word[0]){strcat(res,words[j].word);words[j].used=1;found=1;break;}}if(!found)break;}printf("%s",res);
}

http://www.ppmy.cn/embedded/104475.html

相关文章

NVIDIA Ada Lovelace 架构

目录 3D 图形领域的突破性时刻。 第四代 Tensor Core 第三代 RT Core 着色器执行重排序 DLSS 3 AV1 编码器 致力于打造出色的游戏与创作、专业图形、AI 和计算性能。 3D 图形领域的突破性时刻。 Ada GPU 架构能够为光线追踪和基于 AI 的神经图形提供革命性的性能。该架构…

算法的学习笔记—最小的 K 个数(牛客JZ40)

&#x1f600;前言 在编程面试中&#xff0c;找出一个数组中最小的K个数是一个常见的问题。虽然看似简单&#xff0c;但要在高效性方面有所保证却并不容易。本文将介绍两种有效解决该问题的算法&#xff1a;基于堆的解法和快速选择算法。我们将详细讲解它们的实现方式、时间复杂…

强化学习与深度学习的结合

强化学习与深度学习的结合 目录 一、引言 二、强化学习基础 三、深度学习基础 四、强化学习与深度学习的结合实例 五、总结 一、引言 随着人工智能技术的不断发展&#xff0c;强化学习已经成为了计算机科学领域的一个重要分支。而深度学习作为一种强大的机器学习方…

K8S Service

K8S知识目录 Kubernetes&#xff08;通常简写为K8s&#xff09;中的Service是一种核心资源对象&#xff0c;它用于将一组Pod&#xff08;容器组&#xff09;抽象为一个单一的服务&#xff0c;使得这些Pod能够对外提供稳定的服务入口。 一、作用 提供稳定的网络终点&#xff…

C#——类与结构

在未学习面向对象语言时&#xff0c;我常常将类比作一种结构体&#xff0c;其实类与结构体也确实很相似&#xff0c;类用来做函数的集合&#xff0c;结构用来做变量的集合&#xff0c;接下来将从几个角度刨析类与结构的不同。 类 vs 结构 类和结构在设计和使用时有不同的考虑…

常使用的前端构建优化策略

在前端开发中&#xff0c;构建优化是提升网站或应用性能、提高用户体验的重要手段。以下是一些常用的前端构建优化策略&#xff0c;它们涵盖了代码优化、资源加载优化、缓存利用、网络优化等多个方面。 一、代码优化 1. 精简代码 移除冗余代码&#xff1a;检查并删除未使用的…

音视频入门基础:WAV专题(7)——FFmpeg源码中计算WAV音频文件每个packet的size值的实现

一、引言 从文章《音视频入门基础&#xff1a;WAV专题&#xff08;6&#xff09;——通过FFprobe显示WAV音频文件每个数据包的信息》中我们可以知道&#xff0c;通过FFprobe命令可以显示WAV音频文件每个packet&#xff08;也称为数据包或多媒体包&#xff09;的信息&#xff0…

在Ubuntu上使用apt工具安装RabbitMQ

创建安装脚本 cd home/ madir scripts cd scripts 创建脚本前&#xff0c;需要确认Linux版本。不同的版本对应着不同的运行脚本。 lsb_release -a 查看Linux版本 可以看到&#xff0c;我的Ubuntu版本是22.04。 在这里找到对应的脚本复制。 创建脚本文件&#xff1a; ca…