牛客刷题|HJ20 密码验证合格程序, HJ16 购物单,H17坐标移动

本文主要是介绍牛客刷题|HJ20 密码验证合格程序, HJ16 购物单,H17坐标移动,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

ACM输入输出处理

参考:【python & ACM 输入输出的处理:sys.stdin.readline().strip().split())】_sys.stdin.readline()输入去除掉空格-CSDN博客

line2 = sys.stdin.readline()#读一行
a = ' 8dajia8hao8 '
b = a.strip()#移除字符串 开头和结尾  的空格或换行符
c = b.strip('8')#移除字符串 开头和结尾  的指定的字符'8'
d = b.strip('o8')#移除字符串 开头和结尾  的指定的字符序列'o8'
print(s.split())#分割所有的空字符#单个数字
n=int(input())
n = int(sys.stdin.readline())#输入单行多个数据
x, y = map(int, input().split())
data=list(map(int,input().split(" ")))# 读取多行数据
list_password=[]
for line in sys.stdin.readlines():list_password.append(line[:-1])

HJ20 密码验证合格程序

题目链接:密码验证合格程序_牛客题霸_牛客网 (nowcoder.com)

思路:python里面有很多库,如果题目不是只让你实现类似某一个库的功能,就可以直接灵活使用它们。

注意多个if一起用时,最后一种情况不要直接用else,要把它不属于其它情况的条件表明,以避免潜在的错误。

代码

import sysdef check(pw):Stype = [0]*4if len(pw) <= 8:return 'NG'for s in pw:if s.islower():Stype[0] = 1if s.isupper():Stype[1] = 1if s.isdigit():Stype[2] = 1if not s.islower() and not s.isupper() and not s.isdigit(): # 直接用else会使Stype[3]=1 即使没有特殊符号Stype[3] = 1if sum(Stype) < 3:return 'NG'dic = dict()for i in range(len(pw) - 2):if pw[i:i+3] in dic:return 'NG'else:dic[pw[i:i+3]] = 1return 'OK'list_password=[]
for line in sys.stdin.readlines():list_password.append(line[:-1])for i in list_password:print check(i)

HJ16  购物单

题目链接:购物单_牛客题霸_牛客网 (nowcoder.com)

思路:是01背包的扩展。对于每个主件,只有四种考虑情况:是否放主件,放主件+附件1,放主件+附件2, 放主件+附件1+附件2。所以只需循环每个主件,取这四种的最大价值。

记录下每个主件的价格和重要度,每个主件下的附件(如果存在)的价格和重要度。

import sysline1 = sys.stdin.readline()
money, num = map(int, line1.split())primary, annex = {}, {}
dp = [0] * (money + 1)
for i, line in enumerate(sys.stdin.readlines()): i += 1price, importance, pt = map(int, line.split())if pt == 0:primary[i] = [price, importance]else:if pt not in annex:annex[pt] = [[price, importance]]else:annex[pt].append([price, importance])for key in primary:price = [primary[key][0]]value = [primary[key][1] * primary[key][0]]if key in annex:price.append(price[0] + annex[key][0][0])value.append(value[0] + annex[key][0][0]* annex[key][0][1])if len(annex[key])>1:price.append(price[0] + annex[key][1][0])value.append(value[0] + annex[key][1][0]* annex[key][1][1])price.append(price[1] + annex[key][1][0])value.append(value[1] + annex[key][1][0]* annex[key][1][1])for j in range(money, -1, -10):for i in range(len(price)):if price[i] <= j:dp[j] = max(dp[j], dp[j - price[i]] + value[i])
print(dp[money])

HJ17 坐标移动

题目链接:坐标移动_牛客题霸_牛客网 (nowcoder.com)

思路:将输入值以分号隔开存放,对每一项判断是否为合法坐标,若合法,则按照字母和移动方向的关系更新x轴,y轴的值。

代码

import sys
line = sys.stdin.readline().strip()
strList = line.split(';')
x, y = 0, 0
coord = set(['W', 'S', 'A', 'D'])
for item in strList:if  1 < len(item) < 4 and (item[0] in coord) and item[1:].isdigit():       if item[0] == 'W':y += int(item[1:])if item[0] == 'S':y -= int(item[1:])if item[0] == 'A':x -= int(item[1:])if item[0] == 'D':x += int(item[1:])
print(str(x) + ',' +str(y))

HJ19 简单错误记录

题目链接:简单错误记录_牛客题霸_牛客网 (nowcoder.com)

思路:建立列表和字典,分别记录地址+行号,和地址+行号:计数。对于每一行输入,只记录地址的后16位和行号,如果字典中没有,记录在字典和列表中,如果有,对应键值加1。最后输出后八位。

代码

import sys
ls = []   
dic = {}  for line in sys.stdin.readlines():address = line.split()address[0] = address[0].split('\\')[-1]address = ' '.join([address[0][-16:], address[1]])if address not in dic:ls.append(address)dic[address] = 1else:dic[address] += 1
for item in ls[-8:]:print(str(item)+' '+ str(dic[item]))

HJ3 明明的随机数

题目链接:明明的随机数_牛客题霸_牛客网 (nowcoder.com)

思路:思路不复杂,建一个set,加入每行的数,由于set中元素不重复,所以不用手动判断是否去重。全部加入后,用sorted函数排序,输出。注意加入时要把输入转换位int形式,不然最后print出每行中间会空一行。

代码

import sys
N = sys.stdin.readline().strip()
numSet = set()for num in sys.stdin.readlines():numSet.add(int(num))
numSet = sorted(numSet)
for i in numSet:print(i)

HJ4 字符串分割

题目链接:字符串分隔_牛客题霸_牛客网 (nowcoder.com)

思路:将字符串每八个位一组,分别加紧结果集中,如果最后一组不满八个,就在后面用零补齐八位。

代码

import sys
ans = []
strs = sys.stdin.readline().strip()
k = len(strs)/8 
for i in range(k):ans.append(strs[8*i:8*(i+1)])
if len(strs)%8 != 0:remain = len(strs)%8ans.append(strs[-remain:] + '0'*(8 - remain))
for i in ans:print(i)

这篇关于牛客刷题|HJ20 密码验证合格程序, HJ16 购物单,H17坐标移动的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/780537

相关文章

使用Python从PPT文档中提取图片和图片信息(如坐标、宽度和高度等)

《使用Python从PPT文档中提取图片和图片信息(如坐标、宽度和高度等)》PPT是一种高效的信息展示工具,广泛应用于教育、商务和设计等多个领域,PPT文档中常常包含丰富的图片内容,这些图片不仅提升了... 目录一、引言二、环境与工具三、python 提取PPT背景图片3.1 提取幻灯片背景图片3.2 提取

将Java程序打包成EXE文件的实现方式

《将Java程序打包成EXE文件的实现方式》:本文主要介绍将Java程序打包成EXE文件的实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录如何将Java程序编程打包成EXE文件1.准备Java程序2.生成JAR包3.选择并安装打包工具4.配置Launch4

Java程序进程起来了但是不打印日志的原因分析

《Java程序进程起来了但是不打印日志的原因分析》:本文主要介绍Java程序进程起来了但是不打印日志的原因分析,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Java程序进程起来了但是不打印日志的原因1、日志配置问题2、日志文件权限问题3、日志文件路径问题4、程序

Linux内核参数配置与验证详细指南

《Linux内核参数配置与验证详细指南》在Linux系统运维和性能优化中,内核参数(sysctl)的配置至关重要,本文主要来聊聊如何配置与验证这些Linux内核参数,希望对大家有一定的帮助... 目录1. 引言2. 内核参数的作用3. 如何设置内核参数3.1 临时设置(重启失效)3.2 永久设置(重启仍生效

SpringBoot实现微信小程序支付功能

《SpringBoot实现微信小程序支付功能》小程序支付功能已成为众多应用的核心需求之一,本文主要介绍了SpringBoot实现微信小程序支付功能,文中通过示例代码介绍的非常详细,对大家的学习或者工作... 目录一、引言二、准备工作(一)微信支付商户平台配置(二)Spring Boot项目搭建(三)配置文件

Python从零打造高安全密码管理器

《Python从零打造高安全密码管理器》在数字化时代,每人平均需要管理近百个账号密码,本文将带大家深入剖析一个基于Python的高安全性密码管理器实现方案,感兴趣的小伙伴可以参考一下... 目录一、前言:为什么我们需要专属密码管理器二、系统架构设计2.1 安全加密体系2.2 密码强度策略三、核心功能实现详解

opencv图像处理之指纹验证的实现

《opencv图像处理之指纹验证的实现》本文主要介绍了opencv图像处理之指纹验证的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学... 目录一、简介二、具体案例实现1. 图像显示函数2. 指纹验证函数3. 主函数4、运行结果三、总结一、

SpringSecurity 认证、注销、权限控制功能(注销、记住密码、自定义登入页)

《SpringSecurity认证、注销、权限控制功能(注销、记住密码、自定义登入页)》SpringSecurity是一个强大的Java框架,用于保护应用程序的安全性,它提供了一套全面的安全解决方案... 目录简介认识Spring Security“认证”(Authentication)“授权” (Auth

Qt把文件夹从A移动到B的实现示例

《Qt把文件夹从A移动到B的实现示例》本文主要介绍了Qt把文件夹从A移动到B的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学... 目录如何移动一个文件? 如何移动文件夹(包含里面的全部内容):如何删除文件夹:QT 文件复制,移动(

如何用java对接微信小程序下单后的发货接口

《如何用java对接微信小程序下单后的发货接口》:本文主要介绍在微信小程序后台实现发货通知的步骤,包括获取Access_token、使用RestTemplate调用发货接口、处理AccessTok... 目录配置参数 调用代码获取Access_token调用发货的接口类注意点总结配置参数 首先需要获取Ac