【CSDN周赛29期】

T1 订班服

小A班级订班服了! 可是小A是个小糊涂鬼,整错了好多人的衣服的大小。 小A只能自己掏钱包来补钱了。 小A想知道自 己至少需要买多少件衣服。

n = int(input())
num1 = []
num2 = []
ans = 0
for i in range(n):
	num1.append(input())
for i in range(n):
	num2.append(input())
	
num = ["M","S","L","XL","XLL","XLLL","XLLLL","XLLLLL"]

for i in range(len(num)):
	ans += abs(num1.count(num[i]) - num2.count(num[i]))
print(ans // 2)

T2 争抢糖豆

抓糖豆,小Q与小K都喜欢吃糖豆。但是糖豆分两种,超甜糖豆和普通糖豆。现在有w个超甜糖豆和b个普通糖豆。小Q和小K开始吃糖豆,他们决定谁先吃到超甜糖豆谁就获胜。小K每次吃的时时候会捏碎一颗糖豆。小Q先吃,小Q想知道自己获胜的概率。如果两个人都吃不到超甜糖豆小K获胜。

w, b = [int(item) for item in input().strip().split()]

dp = [[0]*(b+1) for i in range(w+1)]
for i in range(1,w+1):
	dp[i][0] = 1
for i in range(b+1):
	dp[0][b] = 0
for i in range(1,w+1):
	for j in range(b+1):
		dp[i][j] = i/(i+j)
	if j >= 2:
		dp[i][j] += j/(i+j)*(j-1)/(i+j-1)*i/(i+j-2)*dp[i-1][j-2]
	if j >= 3:
		dp[i][j] += j/(i+j)*(j-1)/(i+j-1)*(j-2)/(i+j-2)*dp[i][j-3]

print(f'{
      
      dp[w][b]:.9f}')

T3 走楼梯

现在有一截楼梯,根据你的腿长,你一次能走1级或2级楼梯,已知你要走n级楼梯才能走到你的目的楼层,请实现一个方法,计算你走到目的楼层的方案数。

n = int(input())
if n<=2:
	print(n)
else:
	f_1, f_2 = 1, 2
	f = 0
	for i in range(2, n):
		f = f_1 + f_2
		f_1 = f_2
		f_2 = f
print(f)

T4 打家劫舍

一个小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。给定一个代表每个房屋存放金额的非负整数数组,计算不触动警报装置的情况下,一夜之内能够偷窃到的最高金额。

n = int(input())
nums = [int(i) for i in input().split()]
dp = [0] * len(nums)
if len(nums) == 0:
	print("0")
elif len(nums) == 1:
	print(nums[0])
elif len(nums) == 2:
	print(max(nums[0],nums[1]))
else:
	dp[0] = nums[0]
	dp[1] = max(nums[0],nums[1])
for i in range(2,len(nums)):
	dp[i] = max(dp[i-2]+nums[i],dp[i-1])
print(dp[-1])

猜你喜欢

转载自blog.csdn.net/qq_46500711/article/details/129102232