• 【站内题解】十六道csdn每日一练Python题解


    文章目录


    在这里插入图片描述


    注:本文内容均整合自站内文章

    题目一: 游乐园的门票

    1. 问题描述

    某游乐园院按照游客身高段收取票价:不到 1.0米 的游客免费; 1.0~1.2 米的游客为 80 元;超过 1.2 米的游客为 150 元。

    请编写一个死循环,每次循环开始先使用print()语句一行输出字符串"Please tell me your height!Enter ‘quit’ to end the program."。

    如果读取到的字符串等于’quit’,则使用 break 语句退出循环,否则将字符串转成浮点数,如果小于1.0米,则使用print()语句一行输出字符串’Your admission cost is 0 yuan.‘;

    如果大于等于1.0米且小于等于1.2米,则使用print()语句一行输出字符串’Your admission cost is 80 yuan.’;
    如果大于1.2米,则使用print()语句一行输出字符串’Your admission cost is 150 yuan.‘。

    然后本次循环结束,再次进入 while 循环中的条件测试。

    2. 输入描述

    保证每一行的输入只有浮点数或字符串’quit’,且保证数字合法,范围在[0, 3]。

    3. 输出描述

    按题目描述进行输出即可。

    4. 示例

    4.1 输入

    0.5
    1.2
    quit

    4.2 输出

    Please tell me your height!
    Enter ‘quit’ to end the program.

    5. 答案

    5.1 解法一

    while True:
        try:
            print("Please tell me your height!\nEnter 'quit' to end the program.")
            a = input()
            if a == 'quit':
                break
            elif float(a) < 1.0:
                print('Your admission cost is 0 yuan.')
            elif 1.0 < float(a) <= 1.2:
                print('Your admission cost is 80 yuan.')
            else:
                print('Your admission cost is 150 yuan.')
        except:
            break
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    5.2 解法二

    operators_dict = {'<': 'less than','==': 'equal'}
    print('Here is the original dict:')
    
    for k in sorted(operators_dict):
        print(f'Operator {k} means {operators_dict[k]}.')
    print()    
    
    operators_dict['>'] =  'greater than'
    print('The dict was changed to:')
    
    for k in sorted(operators_dict):
        print(f'Operator {k} means {operators_dict[k]}.')
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    题目二:小桥流水人家

    1. 问题描述

    在n*m的地图上,存在一个喷水点(x,y). 如果相邻的位置低于有水的地方,水就能流到相邻的某位置。 已知各个地方的海拔高度,求水的最大覆盖个格子数。

    2. 输入描述

    第一行输入n,m,x,y.(1<=n,m<=1000,1<=x<=n,1<=y<=m) 以下n行每行m个整数,表示每个格子的海拔.(1<=h<=1000)

    3. 输出描述

    输出最大覆盖格子数

    4. 示例

    4.1 输入

    3 5 2 3
    3 4 1 5 1
    2 3 3 4 7
    4 1 4 1 1

    4.2 输出

    6

    5. 答案

    class Solution:
        def __init__(self) -> None:
            pass
    
        def changshi(self, vector, matrix, n, m, a, b):
            ll = [[-1, 0], [1, 0], [0, -1], [0, 1]]
            for i in range(4):  # 四边寻找 上下右左
                a1 = a + ll[i][0]
                b1 = b + ll[i][1]
                if 0 <= a1 <= n - 1 and 0 <= b1 <= m - 1:
                    if vector[a][b] > vector[a1][b1]:  # 若找到
                        matrix[a1][b1] = 1  # 标记位置
                        self.changshi(vector, matrix, n, m, a1, b1)
            return matrix
    
        def solution(self, n, m, x, y, vector):
            result = 0
            a, b = n - y, x - 1
            matrix = [[0 for i in range(m)] for i in range(n)]
            matrix[n - y][x - 1] = 1
            matrix = self.changshi(vector, matrix, n, m, a, b)
            for i in range(n):
                for j in range(m):
                    if matrix[i][j] == 1:
                        result = result + 1
            print(matrix)
            return result
    
    if __name__ == "__main__":
        arr_temp = [int(item) for item in input().strip().split()]
        n = int(arr_temp[0])
        m = int(arr_temp[1])
        x = int(arr_temp[2])
        y = int(arr_temp[3])
        vector = []
        for i in range(n):
            vector.append([int(item) for item in input().strip().split()])
        sol = Solution()
        result = sol.solution(n, m, x, y, vector)
        print(result)
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41

    题目三:小艺读书

    1. 问题描述

    书是人类进步的阶梯。
    小艺每周因为工作的原因会选择性的每天多读几页或者少读几页。
    小艺想知道一本n页的书她会在周几读完。

    2. 输入描述

    第一行输入n(1<=n<=1000);
    第二行输入7个整数,分别表示周一~周日的读书页数p(0<=p<=1000)。(不考虑7个整数都为0的情况)

    3. 输出描述

    输出答案。(1-7)

    4. 示例

    4.1 输入

    100
    15 20 20 15 10 30 45

    4.2 输出

    6

    5. 答案

    class Solution:
    	def __init__(self) -> None:
    		pass
    		
    	def solution(self, n, pages):
    		result = None
    		
    		# TODO: 请在此编写代码
    		page=sum(pages)
    		book=n%page
    		for i in range(7):
    			book-=pages[i]
    			if(book<=0):
    				result=i+1
    				break
    				
    		return result
    		
    if __name__ == "__main__":
    	n = int(input().strip())
    	
    	pages = [int(item) for item in input().strip().split()]
    	
    	sol = Solution()
    	result = sol.solution(n, pages)
    	print(result)
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27

    题目四:鬼画符门之宗门大比

    1. 问题描述

    给定整数序列A。

    求在整数序列A中连续权值最大的子序列的权值。

    2. 输入描述

    第一行输入整数n.(1<=n<=1000)
    第二行输入n整数a。(-1000<=a<=1000)

    3. 输出描述

    输出子序列最大权值。

    4. 示例

    4.1 示例一

    4.1.1 输入

    5
    -1 2 3 -2 4

    4.1.2 输出

    7

    4.2 示例二

    4.2.1 输入

    7
    1 -4 6 7 -10 8 0

    4.2.2 输出

    11

    5. 答案

    class Solution:
    	def __init__(self) -> None:
    		pass
    	def solution(self, n, arr):
    		result = None
    		
    		# TODO: 请在此编写代码
    		num=[]
    		m=0
    		for i in arr:
    			m+=i
    			if m<=0:
    				m=0
    			else:
    				num.append(m)
    		result=max(num)
    		
    		return result
    		
    if __name__ == "__main__":
    
    	n = int(input().strip())
    	
    	arr = [int(item) for item in input().strip().split()]
    	
    	sol = Solution()
    	result = sol.solution(n, arr)
    	
    	print(result)
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30

    题目五:硬币划分

    1. 问题描述

    有1分,2分,5分,10分四种硬币,每种硬币数量无限,给定n分钱(n<100000),有多少中组合可以组成n分钱?

    2. 输入描述

    输入整数n.(1<=n<=100000)

    3. 输出描述

    输出组合数,答案对1e9+7取模。

    4. 示例

    4.1 输入

    13

    4.2 输出

    16

    5. 答案

    class Solution:
    	def __init__(self) -> None:
    		pass
    		
    	def solution(self, n):
    		result = None
    		
    		# TODO: 请在此编写代码
    		coins=[1,2,5,10]
    		arr=[0]*1000001
    		arr[0]=1
    		for i in coins:
    			for j in range(i,n+1):
    				arr[j]=(arr[j]+arr[j-i])%(1e9+7)
    		result=int(arr[n])
    		
    		return result
    		
    if __name__ == "__main__":
    
    		n = int(input().strip())
    		
    		sol = Solution()
    		result = sol.solution(n)
    		
    		print(result)
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27

    题目六:饿龙咆哮-逃离城堡

    1. 题目描述

    小艺酱误入龙族结界,被恶龙带回城堡,小艺酱决定逃离城堡,逃离龙族结界。总路程为c, 小艺酱的速度是vp,饿龙速度为vd。饿龙会在t小时后发现小艺酱出逃。小艺酱担心自己跑不出去,准备了好多珍宝。 每当饿龙追上自己的时候小艺酱就会丢下一个珍宝,饿龙捡到珍宝会返回自己的城堡进行研究,研究f小时后,再出城堡追赶小艺。小艺想知道自己至少需要丢多少珍宝才能让自己安全逃出结界。

    2. 输入描述

    输入整数vp,vd,t,f,c。(1<=vp,cd<=100,1<=t,f<=10,1<=c<=1000)

    3. 输出描述

    输出答案。

    4. 示例

    4.1 输入

    1
    2
    1
    1
    10

    4.2 输出

    2

    5. 答案

    class Solution:
    	def __init__(self) -> None:
    		pass
    		
    	def solution(self, vp, vd, t, f, c):
    		result = None
    		
    		# TODO: 请在此编写代码
    		result=0
    		sp=vp*t
    		while sp<c:
    			if vd-vp<=0:
    				return 0
    			rt=sp/(vd-vp)
    			sp+=vp*rt
    			if sp<c:
    				result+=1
    				sp+=vp*(rt+f)
    				
    		return result
    		
    if __name__ == "__main__":
    
    	vp = int(input().strip())
    	vd = int(input().strip())
    	t = int(input().strip())
    	f = int(input().strip())
    	c = int(input().strip())
    	
    	sol = Solution()
    	result = sol.solution(vp, vd, t, f, c)
    	print(result)
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33

    题目七:严查枪火

    1. 题目描述

    X国最近开始严管枪火。 像是“ak”,“m4a1”,“skr”。都是明令禁止的。 现在小Q查获了一批违禁物品其中部分是枪支。

    小Q想知道自己需要按照私藏枪火来关押多少人。 (只有以上三种枪被视为违法)

    2. 输入描述

    第一行输入整数n.(1<=n<=10000)表示携带违禁物品的人数。

    以下n行表示违禁物品的名称。

    3. 输出描述

    输出需要按照私藏枪火来关押的人。

    4. 示例

    4.1 输入

    3
    Dsd
    ak
    232asd

    4.2 输出

    1

    5. 答案

    class Solution:
    	def __init__(self) -> None:
    		pass
    		
    	def solution(self, n, vector):
    		result = None
    		
    		# TODO: 请在此编写代码
    		result = 0
    		for i in range(n):
    			if vector[i]=="ak" or vector[i]=="m4a1" or vector[i]=="skr":
    				result+=1
    				
    	return result
    	
    	if __name__ == "__main__":
    	
    		n = int(input().strip())
    		
    		vector = []
    		for i in range(n):
    			vector.append(input().strip())
    			
    		s = Solution()
    		result = s.solution(n, vector)
    		
    		print(result)
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28

    题目八:鬼画符门

    1. 题目描述

    鬼画符门,每年都会统计自己宗门鬼画符消耗的数量,往年一直是大师兄管理, 但是这次鬼艺接手了, 你能帮鬼艺写一个程序统计每年消耗数量最多的鬼画符吗?

    2. 输入描述

    第一行输入整数n.(1<=n<=1000)

    以下n行输入n个字符串。

    3. 输出描述

    输出答案字符串。

    4. 示例

    4.1 输入

    5
    red
    red
    green
    grenn
    hen

    4.2 输出

    red

    5. 答案

    class Solution:
    	def __init__(self) -> None:
    		pass
    		
    	def solution(self, n, vector):
    		result = None
    		
    		# TODO: 请在此编写代码
    		dict={}
    		for i in vector:
    			if i not in dict:
    				dict[i]=1
    			else:
    				dict[i]+=1
    		t=max(dict.values())
    		for k,v in dict.items():
    			if v==t:
    				result=k
    				break
    				
    		return result
    		
    if __name__ == "__main__":
    
    	n = int(input().strip())
    	
    	vector = []
    	for i in range(n):
    		vector.append(input().strip())
    		
    	s = Solution()
    	result = s.solution(n, vector)
    	
    	print(result)
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35

    题目九:收件邮箱

    1. 题目描述

    已知字符串str,str表示邮箱的不标准格式。

    其中”.”会被记录成”dot”,”@”记录成”at”。

    写一个程序将str转化成可用的邮箱格式。(可用格式中字符串中除了开头结尾所有”dot”,都会被转换,”at”只会被转化一次,开头结尾的不转化)

    2. 输入描述

    输入字符串str.(1<=strlen(str)<=1000)

    3. 输出描述

    输出转化后的格式。

    4. 示例

    4.1 输入

    mxyatoxcoderdotcom

    4.2 输出

    mxy@oxcoder.com

    5. 答案

    class Solution:
    	def __init__(self) -> None:
    		pass
    	
    	def solution(self, str):
    		result = None
    		
    		# TODO: 请在此编写代码
    		result=str.replace('dot','.')
    		result=result.replace('at','@',1)
    		if result[0]==".":
    			result="dot"+result[1:]
    		if result[0]=="@":
    			result="at"+result[1:]
    		if result[-1]==".":
    			result=result[:-1]+"dot"
    		if result[-1]=="@":
    			result=result[:-1]+"at"
    		return result
    		
    if __name__ == "__main__":
    
    	str = input().strip()
    
    	s = Solution()
    	result = s.solution(str)
    
    	print(result)
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29

    题目十:最长递增的区间长度

    1. 题目描述

    给一个无序数组,求最长递增的区间长度。如:[5,2,3,8,1,9] 最长区间 2,3,8 长度为 3

    2. 输入描述

    第一行输入整数n。(1<=n<=10000)表示数组的大小
    第二行给出n个整数a.(-1e9<=a<=1e9)

    3. 输出描述

    输出转化后的格式。

    4. 示例

    4.1 输入

    6
    5 2 3 8 1 9

    4.2 输出

    3

    5. 答案

    class Solution:
    	def __init__(self) -> None:
    		pass
    
    	def solution(self, n, arr):
    		result = None
    
    		# TODO: 请在此编写代码
    		result=0
    		t=1
    		arr.append(-1e9-1)
    		for i in range(n):
    			if arr[i+1]>arr[i]:
    				t+=1
    			else:
    				result=max(result,t)
    				t=1
    
    		return result
    
    if __name__ == "__main__":
    
    	n = int(input().strip())
    
    	arr = [int(item) for item in input().strip().split()]
    
    	s = Solution()
    	result = s.solution(n, arr)
    
    	print(result)
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31

    题目十一:小玉家的电费

    1. 题目描述

    小玉家今天收到了一份电费通知单。上面写着:月用电量在150千瓦时及以下部分按每千瓦时0.4463元执行;月用电量在151~400千瓦时的部分按每千瓦时0.4663元执行;月用电量在401千瓦时及以上部分按每千瓦时0.5663元执行。请根据电价规定,计算出应交的电费应该是多少。

    2. 输入描述

    输入一个整数,表示用电总计(单位以千瓦时计),不超过10000。

    3. 输出描述

    输出一个数,保留到小数点后1位(单位以元计,保留到小数点后一位)。

    4. 示例

    4.1 输入

    267

    4.2 输出

    121.5

    5. 答案

    import sys
     
     
    amount = int(sys.stdin.readline().strip())
    result = 0
     
    if amount <= 150:
        result = 0.4463 * amount
    elif 151 <= amount <= 400:
        result = 0.4463 * 150 + 0.4663 * (amount - 150)
    else:
        result = 0.4463 * 150 + 0.4663 * 250 + 0.5663 * (amount - 400)
     
    print('%.1f' % result)    # 注意保留小数位
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    题目十二:单词逆序

    1. 题目描述

    对于一个字符串,请设计一个算法,只在字符串的单词间做逆序调整。例如:输入“I am a boy!”,输出“boy! a am I”。

    2. 输入描述

    输入一行字符串str。(1 <= strlen(str) <= 10000)

    3. 输出描述

    返回逆序后的字符串。

    4. 示例

    4.1 输入

    It’s a dog!

    4.2 输出

    dog! a It’s

    5. 答案

    import sys
     
     
    s = sys.stdin.readline().strip().replace('\n', '')
    lst = s.split(' ')
    for i in range(len(lst) - 1, -1, -1):
        print(lst[i], end='')
        if i != 0:
            print(' ', end='')
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    题目十三:小Q整数分割

    1. 题目描述

    小Q决定吧一个整数n,分割成k个整数。

    每个整数必须大于等于1。

    小Q有多少方案。

    2. 输入描述

    输入整数n,k。(1 <= n, k<= 100)

    3. 输出描述

    输出方案数。答案对1e9+7取模。

    4. 示例

    4.1 输入

    3 3

    4.2 输出

    1

    5. 答案

    import sys
     
     
    n, k = map(int, sys.stdin.readline().split())
     
    if k > n:        # 特判下k > n的情况
        print(0)
        sys.exit()
     
    a = b = 1
    for i in range(1, k):
        a *= (n - i)
        b *= i
     
    a /= b
    print('%.0f' % (a % (1e9 + 7)))
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    题目十四:新型美丽数列

    1. 题目描述

    定义美丽数列A:

    1. 数列中相邻的数越是靠内相对大小加一,a[2]=a[1]+1,a[n-2]=a[n-1]+1…
    2. 距离边缘距离相等的数的大小相等:a[0] = a[n-1],a[1] = a[n-2]…
      通过修改数列中的值使得给定数列变成美丽数列。
      修改后的值必须仍是正整数。

    小Q有多少方案。

    2. 输入描述

    第一行输入整数n。(1 <= n <= 1000)表示数列的大小。

    第二行输入n个整数。

    3. 输出描述

    输出最小修改次数。

    4. 示例

    4.1 输入

    3
    1 1 1

    4.2 输出

    1

    5. 答案

    import math
    import sys
    
    
    def diffnum(list):
        map = {}
        for index in range(len(list)):
            map[str(index)] = str(list[index] - index)
        return map
    
    def countnum(map):
        map1 = {}
        for key,value in map.items():
            if value in map1.keys():
                map1[str(value)] = map1[str(value)] + 1
    
            else:
                map1[str(value)] = 1
        return map1
    
    
    list = [1,2,3,2,5,8,5,4,5,2,1]
    
    split_num = math.ceil(len(list) / 2)
    
    left_list_num = diffnum(list[0:split_num])
    
    left_list_count = countnum(left_list_num)
    
    list_re = list[::-1]
    
    right_list_num = diffnum(list_re[0:split_num])
    
    right_list_count = countnum(right_list_num)
    
    sum_map = left_list_count.copy()
    
    for key,value in right_list_count.items():
        if key in sum_map.keys():
            sum_map[key] = sum_map[key] + value
        else:
            sum_map[key] = value
    
    max_value = sorted(sum_map.values())[-1]
    
    log = sys.maxsize
    
    for key,value in sum_map.items():
        if max_value == value:
            log = key
            break
    
    if log == sys.maxsize:
        print("错误")
        exit(1)
    
    count = 0
    
    
    for key,value in left_list_num.items():
        if value != log :
            list[int(key)] = list[int(key)] + (int(log) - int(value))
            count = count + 1
    
    
    list = list[::-1]
    
    num_log = 0
    
    if len(list) % 2 !=0:
        num_log = 1
    
    for key,value in right_list_num.items():
        if num_log == 1 and key == str(split_num-1):
            break
        if value != log :
            list[int(key)] = list[int(key)] + (int(log) - int(value))
            count = count + 1
    
    print(count)
    print(list)
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82

    题目十五:熊孩子拜访

    1. 题目描述

    已知存在一个长度为n的整数序列A,A中所有元素按照从小到大排序,现在执行倒置一段序列。请你找出A序列的倒置子序列。如果没有,输出“0 0”。

    2. 数据范围

    1<=n<=1000

    1<=num<=10000

    3. 输入描述

    第一行输入整数n。(1 <= n <= 1000)表示数列的大小。

    第二行输入n个整数。

    4. 输出描述

    输出最小修改次数。

    5. 示例

    5.1 输入

    4
    1 3 2 4

    5.2 输出

    2 3

    6. 答案

    class Solution:
        def __init__(self) -> None:
            pass
        def solution(self, n, arr):
            result = []
            # 保存右值
            max = 0
            # 保存左值
            min = 0
            next = 0
            for item in arr:
                if next>item and item>max:
                    max=next
                    min=item
                elif next<min and item>max:
                    min=next
                next=item
            result.append(str(min))
            result.append(str(max))
            if len(result)==0:
                result=["0","0"]
            return result
     
    if __name__ == "__main__":
        n = int(input().strip())
        arr = [int(item) for item in input().strip().split()]
        sol = Solution()
        result = sol.solution(n, arr)
        print(" ".join(result))
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30

    题目十六:走楼梯

    1. 题目描述

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

    2. 输入描述

    输入你要去的楼层。

    3. 输出描述

    输出你走到目的楼层的方案数。

    4. 示例

    4.1 输入

    5

    4.2 输出

    8

    5. 答案

    class Solution:
        def __init__(self) -> None:
            pass
     
        def solution(self, n):
            if isinstance(n, int) and n > 0:
                basic_dic = {1: 1, 2: 2}
                if n in basic_dic.keys():
                    return basic_dic[n]
                else:
                    return self.solution(n - 1) + self.solution(n - 2)
            else:
                return False
     
     
    if __name__ == "__main__":
        n = int(input().strip())
        sol = Solution()
        result = sol.solution(5)
        print(result)
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
  • 相关阅读:
    C语言深度剖析——bool类型,浮点数相等比较。
    mysql高阶语句
    【设计模式】28.结构型模式-桥接(Bridge)
    Java异常机制
    实验室管理系统LIMS
    MATLAB R2024a 主要更新内容
    Python移除指定文件夹中所有文件名称中的特殊字符(数字、特殊字符、空格等)、只保留字母字符
    Java数组遍历深度解析
    9月15日第壹简报,星期四,农历八月二十
    odoo13 升级odoo15时注意点
  • 原文地址:https://blog.csdn.net/weixin_41102528/article/details/128043046