我怎么也想不到会上力扣的题目...虽说是简单题,但是我还是salute了。
"""
实验7-1:编写程序,用户输入一行字符串,其中可能包括英文小括号 (),请检查小括号是否配对正确,仅限小括号。
【运行示例1】
(7-5)+3-2
配对成功
【运行示例2】
(a+b))
配对不成功
"""
# 利用列表和栈的思想来处理
def match_kuohao(s):
ls = []
kuohao = "()"
for i in range(len(s)):
si = s[i]
if kuohao.find(si) == -1:
continue
if si == '(':
ls.append(si)
continue
if len(ls) == 0:
return False
p = ls.pop()
if p == '(' and si == ')':
continue
else:
return False
if len(ls) > 0:
return False
return True
n = input()
if match_kuohao(n):
print("配对成功")
else:
print("配对不成功")
# 利用字典去处理括号对应的问题
def match_brackets(s):
# 使用字典来映射括号
bracket_map = {')': '('}
stack = []
for char in s:
# 如果是右括号,检查栈顶是否有对应的左括号
if char in bracket_map:
if stack and stack[-1] == bracket_map[char]:
stack.pop() # 弹出匹配的左括号
else:
# 如果栈为空或栈顶不是对应的左括号,返回False
return False
else:
# 如果是左括号,压入栈中
stack.append(char)
# 如果栈为空,则所有括号都正确配对
return not stack
n = input()
if match_brackets(n):
print("配对成功")
else:
print("配对不成功")
# 好朋友的奇思妙想
def check_kuohao(input_str):
count = 0
for char in range(len(input_str)):
if input_str[char] == "(":
count += 1
elif input_str[char] == ")":
count -= 1
if count < 0:
return "配对不成功"
if count == 0:
return "配对成功"
else:
return "配对不成功"
inputStr = input()
print(check_kuohao(inputStr))
"""
实验7-2:快乐的数字按照如下方式确定:从一个正整数开始,用其每位数的平方之和取代该数,
并重复这个过程,直到最后数字要么收敛等于1且一直等于1,
要么将无休止地循环下去且最终不会收敛等于1。能够最终收敛等于1的数就是快乐的数字。
编写程序,输入一个数字,判断输出这个数字是否“快乐”。
例如,数字 19 就是一个快乐的数字,计算过程如下:
12 + 92 = 82
82 + 22 = 68
62 + 82 = 100
12 + 02 + 02 = 1 (最终收敛为1)
【运行示例1】
19
19是快乐数字
【运行示例2】
22
22不是快乐数字
这里题目解释的有问题。。。所有该有的符号都没有(老师全责)
实际上的过程是:
数字 19 就是一个快乐的数字,计算过程如下:
1^2 + 9^2 = 82
8^2 + 2^2 = 68
6^2 + 8^2 = 100
1^2 + 0^2 + 0^2 = 1 (最终收敛为1)
"""
def getHappyNum(num):
numStr = str(num)
sum_of = 0
for i in numStr:
sum_of += int(i)**2
return sum_of
n = eval(input())
a = n
while n != 1 and n != 4:
n = getHappyNum(n)
else:
if n == 1:
print("{}是快乐数字".format(a))
else:
print("{}不是快乐数字".format(a))
"""
实验7-3:编写程序,输入三个自然数m、n和k,解决以下问题:m个人在一条船上,超载,需要n人下船。
于是人们排成一队,排队的位置即为他们的编号。报数,从 1 开始,数到 k 的人下船。
如此循环,直到船上仅剩 m - n人为止,问都有哪些编号的人下船了呢?
【运行示例】
30
15
9
9号下船了
18号下船了
27号下船了
6号下船了
16号下船了
26号下船了
7号下船了
19号下船了
30号下船了
11号下船了
23号下船了
5号下船了
21号下船了
4号下船了
22号下船了
"""
def yueSeFu(m,n,k):
serial_num = list(range(1,m +1)) # 创建从1到m的序号
index = 0
if k==1:
for i in range(1,n+1):
serial_num.remove(i)
print('{0}号下船了'.format(i))
else:
while len(serial_num) > m - n:
for i in serial_num: # 遍历每个编号
index += 1
if index == k: # 当外部变量index找到k时,进行下面代码块的操作
serial_num.remove(i) # 移除需要下船的人的编号
index = 1 # 这时候index已经找到序号k了,就要重新遍历
print('{0}号下船了'.format(i))
if len(serial_num) == m - n:
break
m1 = eval(input())
n1 = eval(input())
k1 = eval(input())
yueSeFu(m1,n1,k1)
"""
实验7-4:编写程序,输入一个整数数组nums和一个目标值target,
请在该数组中找出和为目标值的那两个整数,并返回他们的数组下标。假定最多只能找到一种和为目标值的可能性。
【运行示例1】
2,7,11,5
9
和为目标值的两个整数的下标是 (0, 1)
【运行示例2】
2,7,11,5
8
和为目标值的两个整数的下标是 未找到
两数之和!感受leetcode第一题的风采吧!!!
"""
def twoSum(nums, target):
length = len(nums) # 获取列表的长度
for index1 in range(length - 1): # 减1是因为后面的循环会考虑到index1+1
for index2 in range(index1 + 1, length): # 从index1的下一个元素开始
if nums[index1] + nums[index2] == target and nums[index1] != nums[index2]:
return index1, index2
return
a = list(map(int, input().split(',')))
b = int(input())
result = twoSum(a, b)
if result:
print("和为目标值的两个整数的下标是 ({}, {})".format(result[0],result[1]))
else:
print("和为目标值的两个整数的下标是 未找到")
"""
实验7-5:编写程序,输入一个自然数n,输出n阶的蛇形矩阵,
蛇形矩阵是由1开始的自然数依次排列成的一个矩阵上三角形。
【运行示例】
5
1 3 6 10 15
2 5 9 14
4 8 13
7 12
11
"""
def generate_list(n):
n_list = [1]
for i in range(2, n+1):
n_list.append(n_list[-1] + i)
return n_list
def generate_matrix(s):
s_matrix = []
s_matrix.append(s)
while len(s_matrix[-1][1::]) > 0:
m = []
for i in s_matrix[-1][1::]:
m.append(i-1)
s_matrix.append(m)
return s_matrix
g = generate_list(int(input()))
for s in generate_matrix(g):
for o in s:
print(o,end=" ")
if len(s)>1:
print()
"""
实验7-6:现有n种砝码,重量互不相等,分别为 m1,m2,m3…mn;每种砝码对应的数量为 x1,x2,x3…xn 。
现在要用这些砝码去称物体的重量(放在同一侧),问能称出多少种不同的重量。
输入描述:
对于每组测试数据:
第一行:n —— 砝码的种数(范围[1,10])
第二行:m1 m2 m3 … mn —— 每种砝码的重量(范围[1,2000]),空格间隔
第三行:x1 x2 x3 … xn —— 每种砝码对应的数量(范围[1,10]),空格间隔
输出描述:
利用给定的砝码可以称出的不同的重量数
例如,三种砝码,分别重1、2、5,重1的有1个,
重2的有1个,重5的有1个,共能称出8种不同的重量0、1、2、3、5、6、7、8。
【运行示例】
3
1 2 5
1 1 1
8
"""
# 砝码种类
kind = int(input())
# 砝码重量
weight = input().split(' ')
# 砝码数量
number = [int(a) for a in (input()).strip().split(' ')]
list_kind = []
set_weight = {0, }
for a in range(kind):
for i in range(number[a]):
list_kind.append(weight[a])
for q in list_kind:
for ww in list(set_weight):
set_weight.add(int(q) + ww)
print(len(set_weight))