本文主要为了解决之前的一个困扰-----------牛客网的acm模式刷题时到底应该怎么处理输入输出的问题。由于目前各大公司笔试大多都是需要自己调试输入输出,这就可能会让很多习惯力扣核心代码模式的朋友感到不适,遂作此文以解困惑。
(本文使用的语言是Python3)
牛客网acm模式刷题重复输入时while True用法
try :可能抛出异常的语句。
except :捕获异常,处理异常。
while True:
try:
#代码部分
except:
break
找出给定字符串中大写字符(即’A’-‘Z’)的个数。
while True:
try:
a = 0
s = input()
for i in s:
if i.isupper():
a += 1
print(a)
except:
break
牛客网acm模式刷题怎么输入输出?
只有一行输入
输入:3 abc bca cab abc 1
ss=input().split()
print(ss)#['3', 'abc', 'bca', 'cab', 'abc', '1']
输入 3 4
m, n = map(int, input().split())
输入一维数组:5 1 2 3 4 5(第一个5为数组长度)
方式1:
s = list(map(int, input().split()))
方式2:
n = input()
s = [0]*n
s = [int(i) for i in input().strip().split( )]
有多行输入
输入二维数组:
3
1 3 1
1 5 1
4 2 1
(3为数组行数)
n = input()
data = []
for _ in range(n):
data.append(list(map(int, input().split())))
输入多行数字:
3
2
2
1
(3为数字行数)
line_num,num=int(input()),set()
for i in range(line_num):
num.add(int(input()))
以空格分隔,输出数组元素
输出1 2 3 4 1 :
a=[1,2,3,4,1]
#方式1:
print(*a)#1 2 3 4 1
#方式2:
for i in range(len(a)):
print(a[i],end=' ')#1 2 3 4 1
注意方式2结尾还有个空格。解决方法:
for i in range(len(a)-1):
print(a[i],end=' ')
print(a[-1])
#1 2 3 4 1
*
二维数组
grid = [[1,2,5],[6,7,8],[3,9,4]]
print(grid)#[[1, 2, 5], [6, 7, 8], [3, 9, 4]]
print(*grid)#[1, 2, 5] [6, 7, 8] [3, 9, 4]
一道例题理清acm模式的输入输出
meituan-003. 小美的跑腿代购
小美的一个兼职是美团的一名跑腿代购员,她有 n 个订单可以接,订单编号是 1~n ,但是因为订单的时效性,他只能选择其中 m 个订单接取,精明的小美当然希望自己总的获利是最大的,已知,一份订单会提供以下信息,跑腿价格 v ,商品重量 w kg,商品每重 1kg ,代购费用要加 2 元,而一份订单可以赚到的钱是跑腿价格和重量加价之和。小美可是开兰博基尼送货的人,所以自然不会在意自己会累这种事情。请问小美应该选择哪些订单,使得自己获得的钱最多。
请你按照选择的订单编号的从小到大顺序,如果存在多种方案,输出订单编号字典序较小的方案。
格式:
输入:
- 输入第一行包含两个正整数 n,m,表示订单的数量和小美可以接的订单数量。
- 接下来有 n 行,第 i 行表示 i-1 号订单的信息。每行有两个正整数 v 和 w ,表示一个订单的跑腿价格和商品重量。
输出:
- 输出包含 m 个 1~n 之间的正整数,中间用空格隔开,表示选择的订单编号。
输入:
5 3
5 10
8 9
1 4
7 9
6 10
输出:3 5
解法:
n, m = map(int, input().split( ))#5 2
res = []
for i in range(n):
v, w = map(int, input().split( ))
res.append((v+w*2, i+1))#[(25, 1), (26, 2), (9, 3), (25, 4), (26, 5)]
res.sort(key=lambda x: (-x[0],x[1]))#[(26, 2), (26, 5), (25, 1), (25, 4), (9, 3)]
res1 = sorted([i for _, i in res[:m]])#[1, 2, 5]
print(*res1)#1 2 5