0
点赞
收藏
分享

微信扫一扫

省赛题目(4月23日)の答案

迟来的省赛题目(4月23日)答案!

准备好了吗?迎接怪盗基德的到来吧

怪盗キッドを迎えよう(完了,中二病犯了!)

 注:没看过题目的往这里走哦!(有兴趣的可以去康康呀)

省赛题目(4月23日)_怪盗基德的头号女粉的博客-CSDN博客https://blog.csdn.net/A996B/article/details/124364712?spm=1001.2014.3001.5501

题目一:

 好,我们话不多说,上第一道题思路及解法。

        思路:

        代码:

S1 = input()
S2 = input()
print(S1 + S2)

 题目二:

        思路:

举个例子:

str = "this is really a string example....wow!!!"
print("Max character: " + max(str))
#输出结果:
'''
    Max character: y
'''


str = "this is a string example....wow!!!"
print("Max character: " + max(str))
#输出结果:
'''
    Max character: x
'''

        代码: 

N = list(input())
print(max(N))

题目三:

        思路:

        代码: 

N = int(input())
a = list(map(int,input().split(",")))
b = 0
for i in a:
    if i <= N:
        b += 1
    elif i <= int(N + 80):
        b += 1
    else:
        continue
print(b)

题目四:

        思路: 

        代码:

n = int(input())
a = 1
b = 2
c = 4
for i in range(1,n-3,1):
    c, b, a = a+b+c, c, b  
print(c)

题目五:

        思路:

 

# 说明:
# 所有测试数据正确率为 66%!
# 可以尝试再次完善代码,并调试,争取全部AC通过

         代码:

 

n=input()  # 输入行和列
N=int(n[0])  # 行就是第一个
M=int(n[2])  # 去掉空格来算,列是第三个
s=[]  # 创建一个列表,里面要装所有的格子
d=0  # 输出结果(最长奖品对角线)
for i in range(N):  # 搞N行的输入框
    c=input()[::2]  # 去掉空格
    c=[int(i) for i in c]  # 转成数字
    s.append(c)  # 装进大列表里
def find_left(i,j,s):  #  进行左对角线寻找 i是行数索引号,j是列数索引号
    global N  # 把N搞成全局变量,要用一下它
    h=1  # 对角线奖品数
    if s[i][j] == 1:  # 看看第一个是不是有礼物
        while j > 0 and i<N-1:  # 循环,达到对角线遍历的效果。j要注意不要等于零(后面j-1时会超出遍历范围)。i同理
 #                 N要变成索引号得-1 
            i+=1  # 往下一列
            j-=1  # 往左一格
            if s[i][j] == 1:  # 如果有礼物
                h+=1  # 对角线奖品数+1
        return h  # 最终返回对角线奖品数量
            
    else:  # 如果第一个就没有奖品 就没有遍历的价值了
        return 0;  # 直接返回0
def find_right(i,j,s):  #  进行右对角线寻找 和左对角线寻找方法一模一样
    global N,M  # 这回M也要用用
    h=1
    if s[i][j] == 1:
        while j < M-1 and i<N-1: # M-1的道理和N-1的一样
            i+=1
            j+=1  # 往右一格
            if s[i][j] == 1:
                h+=1
        return h
            
    else:
        return 0;
for i in range(N):  # i是行索引号
    for j in range(M):  # j是列索引号
        e=find_left(i,j,s)  # 左边找找
        f=find_right(i,j,s)  # 右边也找找
        d=e if e>d else f if f>d else d  # 这里运用了一个三目运算符
#  返回e 得满足e>d。要不就是f 得满足f>d。都不是返回d 
print(d)


#第二种方法
q=input()  #  输入两个数 空格隔开
n=q[0]   # 行数
N=int(n)  # 转成整数
m=q[2]   # 列数
M=int(m)
l1=[]   # 保存二维列表 就是题中N*M格子
l=[]    #  保存每次查找到的对角线上的奖品的个数
 
 
for i in range(N):   # 遍历行
    a = list(map(int, input().split(" ")))  # 输入每行的奖品(1有奖 0无奖)
    l1.append(a)  # 整行保存到列表中
 
def find_l(l,x,y):   # 从左到右查找奖品
    global s
    if l[x][y] == 1:  # 判断是否有奖
        s += 1        #  有奖就记上 
        x += 1   
        y += 1    # x,y 理解成坐标 方便下面的移动位置
        if x <= 4 and y <= 5:  # 判断是否在列表范围内
            find_l(l,x,y)  # 是! 就继续找
    else:  
        return s     # 递归的终止条件  返回找到的奖品本次数量
 
def find_r(l,x,y):   #  从右侧往左侧找
    global s1
    if l[x][y] == 1:
        s1 += 1
        x += 1
        y -= 1
        if x <= 4 and 1 < y <= 5:
            find_l(l,x,y)
    else:
        return s1
 
 
for i in range(N):           
    for j in range(M):  # 整个矩形格子里的每一个小格子 预备好被查找
        s = 0
        s1=0
        find_l(l1,i,j)      # 从左到右找
        l.append(s)         #  找到的数量 保存到列表里
        find_r(l1, i, j)    # 从右到左找
        l.append(s1)        #  找到的数量 保存到列表里
print(max(l))   #  打印出找到最长那条线上的奖品数

题目六:

        思路: 

  代码

#等找到大佬的题解再更新···,不会呀

 结束语:

        中文:

                好的,那么这篇文章到这里就结束了,那我们下期再见吧!

        日语:

                はい、では、この文章はここで終わります。じゃ、次の号でまた会いましょう。

         

目录

题目一:

        思路:

        代码:

 题目二:

        思路:

        代码: 

题目三:

        思路:

        代码: 

题目四:

        思路: 

        代码:

题目五:

        思路:

         代码:

题目六:

                 思路: 

        代码

 结束语:

        中文:

        日语:

         


举报

相关推荐

0 条评论