中国建设劳动学会网站,黑色门户网站源码,wordpress 自定义结构 分类,电话销售管理系统一、题目 题目描述#xff1a; 单词接龙的规则是#xff1a;可用于接龙的单词首字母必须要前一个单词的尾字母相同#xff1b; 当存在多个首字母相同的单词时#xff0c;取长度最长的单词#xff0c;如果长度也相等#xff0c;则取字典序最小的单词#xff1b;已经参与接…一、题目 题目描述 单词接龙的规则是可用于接龙的单词首字母必须要前一个单词的尾字母相同 当存在多个首字母相同的单词时取长度最长的单词如果长度也相等则取字典序最小的单词已经参与接龙的单词不能重复使用。 现给定一组全部由小写字母组成单词数组并指定其中的一个单词作为起始单词进行单词接龙请输出最长的单词串单词串是单词拼接而成中间没有空格。 二、输入输出 输入描述: 输入的第一行为一个非负整数表示起始单词在数组中的索引K0 K N 输入的第二行为一个非负整数表示单词的个数N 接下来的N行分别表示单词数组中的单词。输出描述: 输出一个字符串表示最终拼接的单词串。 三、示例 示例1: 输入输出示例仅供调试后台判题数据一般不包含示例 输入: 0 6 word dd da dc dword d 输出 worddwordda 说明: 先确定起始单词word再接以d开头的且长度最长的单词dword剩余以d开头且长度最长的有dd、da、dc则取字典序最小的da所以最后输出worddwordda示例2 输入输出示例仅供调试后台判题数据一般不包含示例 输入: 4 6 word dd da dc dword d 输出: dwordda 说明: 先确定起始单词dword剩余以d开头且长度最长的有dd、da、dc则取字典序最小的da所以最后输出dwordda。 备注: 单词个数N的取值范围为[1, 20]单个单词的长度的取值范围为[1, 30] 四、要求 时间限制C/C 1秒其他语言 2秒 空间限制C/C262144K其他语言524288K 五、解题思路 题目的思路很明确我们只要模拟整个过程就可以了 六、参考代码
# -*- coding: utf-8 -*-File : 2023-B-单词接龙.py
Time : 2023/12/23 00:10:20
Author : mgc
Version : 1.0
Desc : None
# import os
# import re
# import sys
# import copy
# import math
# import queue
# import functools
# from queue import Queue
# from collections import Counter, defaultdict# 获取下一个起始单词的方法
def get_word(words, start):result_t []result []lens []start_str start[-1] # 获取第一个单词的最一个字符# 循环获取以start_str开始的单词列表for word in words:if start_str word[0]:result_t.append(word)lens.append(len(word)) # 记录单词长度else:continue# 如果获取的单词列表为空则返回空值 if len(result_t) 0:return # 如果获取的单词列表长度为1则返回列表的第一个值 elif len(result_t) 1:result result_treturn result[0]# 如果获取的单词列表中有多个值需要判断单词长度else:max_len max(lens) # 取单词长度最大值for word in result_t: # 获取长度最大的单词列表if len(word) max_len:result.append(word)result.sort() # 对单词列表进行排序return result[0] # 返回单词列表的第一个值n int(input())
nums int(input())
words []
for i in range(nums):words.append(input())
next_word words[n]
result
# 当起始单词不为空时执行循环
while len(next_word) 0:result result next_wordwords [x for x in words if x ! next_word] # 从原记录中删除第一个单词next_word get_word(words, next_word)
print(result)