C语言网python刷题笔记

个人笔记,如有错误请大佬们评论指正

[递归]母牛的故事

在这里插入图片描述
多列一点数据可以发现规律

def birth(n):
    s=0
    m=[0]*n
    for i in range(0,n):
        if(i<4):
            s+=1
            m[i]+=s
        else:
            m[i]=m[i-1]+m[i-3]
    return(m[n-1])

a=[]
while(1):
    n=int(input())
    if(n==0):
        break
    b=birth(n)
    a.append(b)
for i in range(len(a)):
    print(a[i])

Minesweeper全英文不想看题就放弃了

陶陶摘苹果

在这里插入图片描述

这也算提高组?唯一的难点在于时间限制(C/C++选手狂喜),python代码稍微多一点就过不了

h=list(map(int,input().split()))
max=int(input())
s=0
for i in range(len(h)):
    if(h[i]<=max+30):
        s+=1
print(s)

IP判断

这一题让我又复习了一遍正则表达式
题目说用"End of file"结束,难道不用输入吗?

import sys
import re
word=[]
p=r"((25[0-5]|2[0-4]\d|1\d{2}|[1-9]?\d)\.){3}(25[0-5]|2[0-4]\d|1\d{2}|[1-9]?\d)"
while(1):
    i=input()
    if(i=="End of file"):
        break
    if(re.match(p,i)):
        word.append('Y')
    else:
        word.append('N')
print('\n'.join(word))

校门外的树

在这里插入图片描述
看了SKY大佬的代码令我茅塞顿开,什么才叫复杂的问题简单化啊

s=0
a=[]
l,m=map(int,input().split())
l+=1
for i in range(l):
    a.append(1)
for i in range(m):
    x,y=map(int,input().split())
    for j in range(x,y+1):
        a[j]=0
for i in range(l):
    if(a[i]==1):
        s+=1
print(s)

——————————以下是我自己写的代码—————————————
代码有点小问题,思路是对的,样例一样但是不通过,先放这后面再看看缺了哪些条件吧(有没有大佬指出啊)

def check(a,b,c,d):
    if(a<=b and c<=b):
        return 1
    elif(a>=b and a>=d):
        return 1
    else:
        return 0

l,m=map(int,input().split())
start=[]
end=[]
for i in range(m):
    x,y=map(int,input().split())
    start.append(x)
    end.append(y)
for i in range(m):
    for j in range(i):
        if(check(start[i],start[j],end[i],end[j])):
            l-=(end[i]-start[i])
        else:
            minstart=min(start[i],start[j])
            maxend=max(end[i],end[j])
            l-=(maxend-minstart)
print(l)
  • 0
    点赞
  • 0
    收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:1024 设计师:我叫白小胖 返回首页
评论 1

打赏作者

Gygert

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值