以下是一些处理ACM竞赛输入的基本示例:
示例 1:单行输入
如果题目要求输入单个整数或字符串,可以直接使用input()。
# 读取单个整数
n = int(input())
print(n) # 假设只是简单地将输入打印出来
# 读取单个字符串
s = input()
print(s)
示例 2:多行输入
如果题目要求输入多行,可以使用循环来读取每一行。
# 读取多行直到EOF(文件结束符),这里假设每行都是一个整数
while True:
try:
n = int(input())
print(n) # 假设只是简单地将输入打印出来
except EOFError:
break # 当达到文件末尾时退出循环
注意:在大多数在线编程竞赛平台(如LeetCode、HackerRank等)中,你不需要显式地处理EOF,因为输入会在所有测试用例都读取完毕后自动结束。但在某些本地测试环境或特定竞赛中,可能需要显式地检测EOF。
示例 3:一行内多个输入
如果一行内包含多个输入(如空格分隔的整数),可以使用split()方法将字符串分割成列表,然后进一步处理。
# 读取一行内的多个整数,假设它们由空格分隔
line = input().split()
nums = [int(num) for num in line] # 将字符串列表转换为整数列表
print(nums) # 假设只是简单地将输入列表打印出来
示例 4:二维数组输入
对于需要输入二维数组(矩阵)的题目,可以先读取矩阵的行数和列数,然后逐行读取数据。
# 读取矩阵的行数和列数
rows, cols = map(int, input().split())
# 初始化矩阵
matrix = []
# 逐行读取矩阵数据
for _ in range(rows):
row = list(map(int, input().split()))
matrix.append(row)
# 打印矩阵(可选)
for row in matrix:
print(row)