代码:
·
·
N = int(input())print(N//3)
解说:运算符(/)得到的是浮点数,运算符(//)得到的是整数的商。
代码:
·
·
·
N = int(input())sp = ['A','B','C','D']print(sp[N-1])
解说:列表编号是从0开始的。
代码:
·
·
·
·
·
·
·
N = int(input())M = N*Nw=len(str(N)) #位数if M % 10**w == N: print('Y')else: print('N')
解说:减N后的整数,后面同样多位的0。
代码:
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
lst = list(map(int, input().split(',')))n = int(input())nums = []for i in lst: #过滤掉大于等于目标的数 if i < n: nums.append(i)rst = -1m = len(nums)if m > 1: for i in range(m-1): #两数组合的双重循环 for j in range(i,m): h = nums[i] + nums[j] if h <= n and h > rst: rst = hprint(rst)
解说:首先过滤掉大于等于目标的数,两数组合的双重循环进行检测。
分析:这里主要问题是如何组合商品,使它们能装下书包。这是小孩都能轻而易举的完成的事,但要编程解决却不容易。假如选第一个,那么第二个就有n-1个可选方案,如此类推,直到不可增加为止,这实际是一棵树。然后是不含第一个的方案,除去第一个,那么第二个就变成第一个了,组合的逻辑没有区别。总体的选择就构成了一个森林。以M=15, N=5,四个体积是3,7,6,2,5为例,绘制森林图如下:
假设它们的价值分别是:5,3,2,1,4,它们的价值累加如下:5+3+1=9
5+3+4=125+2+1=85+2+4=115+1+4=10
3+2+1=6
3+1+4=8
3 + 4=72 + 1=3
2 + 4=6
1 + 4=5
得最大值为12。
代码:
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
m, n = map(int,input().split(','))vs = map(int,input().split(','))ps = map(int,input().split(','))vps = list(zip(vs,ps)) #构造体积、价值对列表mv=0 #最大值def find(sv, sp, lvps): '''@sv 体积累加 @sp 价值累加 @lvps pop后剩余的列表''' global mv for i in range(len(lvps)): nlvps = lvps.copy() #浅拷贝 v, p = nlvps.pop(i) #弹出第i个元素 nsv = sv + v #累加体积 if nsv <= m: #累加体积没超过书包容积 nsp = sp + p #累加价值 if nsp > mv: #比较最大值 mv = nsp if nsv < m: #如果体积小于容积,递归调用 find(nsv, nsp, nlvps)find(0,0,vps)print(mv)