这道题还是很容易解决的,一些初学者或者粗心的人需要注意问题所提示的第一个和最后一个数在长度为n的数组里面分别对应0和n-1。另外,就是CCF CSP要求的标准输出,是要和样例一样的。
下面是本题的代码,如有更好的也欢迎给出代码。
#!usr/bin/python # -*- coding:UTF-8 -*- # 201809-1 卖菜 主要看此部分的关于数组始末位置的判断,另外还有结果的输出 num = input() list = input().split(" ") n = int(num) pri = [] res = [] for i in range(n): pri.append(int(list[i])) tmp = 0 for i in range(n): if i == 0: tmp = int((pri[i]+pri[i+1]) / 2) res.append(tmp) elif i == n-1: tmp = int((pri[i] + pri[i - 1]) / 2) res.append(tmp) else: tmp = int((pri[i-1]+pri[i+1]+pri[i])/3) res.append(tmp) print(" ".join(str(i) for i in res)) # 保证了输出结果符合标准输出第二题参考了别人写的C++代码才写出来,好久不做这种题,真的是废了,还是要多多刷题。
num = int(input()) a = [] a1 = [] #定义两个数组存放第一个人时间范围的前者和后者 b = [] b1 = [] #定义两个数组存放第二个人时间范围的前者和后者 tm = 0 for i in range(num): list = input().split() a.append(int(list[0])) a1.append(int(list[1])) for i in range(num, num * 2): list1 = input().split() b.append(int(list1[0])) b1.append(int(list1[1])) # 将问题输入的数据分别存放到数组 l = max(a1) l1 = max(b1) if l < l1: tmp = l else: tmp = l1 # 找到两个人最后一次运货的最小时间,否则会报错 x = 0 y = 0 for i in range(1,tmp): h = 0 w = 0 if a[x] <= i and a1[x] > i: h = 1 elif i >= a1[x]: x += 1 if b[y] <= i and b1[y] > i: w = 1 elif i >= b1[y]: y += 1 if h == 1 and w == 1: tm += 1 # 通过分析两个人时间范围内是否存在重叠,有的话算入总和,最后求出时间总和并输出 print(tm)以上。
