蓝桥杯2022真题:统计子矩阵、字符统计、排列字母、顺子日期、特殊时间、三角回文数、2022、星期计算

目录

1、统计子矩阵

2、字符统计

3、排列字母

4、顺子日期

5、特殊时间

6、三角回文数

7、2022

8、星期计算

1、统计子矩阵

import os
import sys
# 请在此输入您的代码
n,m,k=map(int,input().split())  #默认用空格隔开,得到输入的三个值
s=[[0 for i in range(m+1)]]   #定义一个数组
for i in range(1,n+1):    #重新创造一个数组,降低时间复杂度
  s.append([0]+list(map(int,input().split())))    #每一次第一层for循环,加入一行
  for j in range(1,m+1):     #每一次第二层for循环,把上一层的数据加到这一层的数据来
    s[i][j]+=s[i-1][j]
res=0
for i in range(1,n+1):    #行
  for j in range(i,n+1):   #枚举上下边界
    l=1          #双指针
    sum=0
    for r in range(1,m+1):     #列
      sum+=s[j][r]-s[i-1][r]   #r列的值+
      while sum>k:     #缩小范围
        sum-=s[j][l]-s[i-1][l]
        l+=1
      res+=r-l+1
print(res)

2、字符统计

import os
import sys
# 请在此输入您的代码
# 统计出现次数最多的大写字母
word=list(input())    #输入字母,将输入的字符串字母以列表形式存储
d={}     #创建一个字典,用字典来解决
for i in set(word):    #去重后遍历每一个出现的字符
    a=word.count(i)    #记录i出现的次数
    if a in d.keys():    #如果a在key里面
       d[a].append(i)
    else:
      d[a]=[i]
print(''.join(sorted(d[max(d)])))     #max(d)得到最大的key,用key去访问value,对得到的value排序,再加进最后的字符串中。

3、排列字母

import os
import sys
# 请在此输入您的代码
a=list(input())
a.sort()
print("".join(a))

4、顺子日期

import os
import sys
# 请在此输入您的代码
print(14)      #0120,0121,0122,0123,0124,0125,0126,0127,0128,0129,1012,1123,1230,1231

5、特殊时间

import os
import sys
# 请在此输入您的代码
# 3:1-2    1:0-9
# 1:  0:4*4*4 2:4*3*4 3-5:4*1*3 6-9:4*1*2
# 2:  0:4*1*4 1:4*1*4 3-9:0
print(4*4*4+4*4*3+3*4*1*3+4*4*2+2*16)

6、三角回文数

import os
import sys
# 请在此输入您的代码
number = 0
for i in range(1,10000):
    number +=i      #依次相加
    if number>=20220514 and str(number)[::]==str(number)[::-1]:   #判断是否回文
        print(number)
        break

7、2022

​
import os
import sys
# N = 11
# M = 2023
# f = [[0] * 2023 for i in range(11)]
# # 10个数组成2022的方案数  01背包 二维费用 求方案数
# f[0][0] = 1 
# for i in range(1,2023):             # 2022种物品,每种物品体积等于i
#     for j in range(10,0, -1):       # 取物品个数
#         for k in range(i, 2023):    # k是背包容量
#             f[j][k] += f[j-1][k-i]  # 前i种物品,取j个物品(每种物品只有一个,该物品体积等于i),物品总体积等于k的总方案
# # 对于dp[j][k]的方案,等价于不取i物品,取j个数,总体积恰好为k的方案加上取物品,i取j个数,总体积恰好为k方案
# print(f[10][2022])
print(379187662194355221)

​

8、星期计算

import os
import sys
# 请在此输入您的代码
day = (20**22-1)%7
if day == 0:
    print(7)
else:
    print(day)
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
蓝桥杯统计矩阵c问题是一个经典的算法问题,可以通过编程实现。下面我将用300字中文回答如何实现。 我们可以使用二维前缀和的方法来解决这个问题。首先,我们定义一个二维数组prefixSum,用来存储原始矩阵a中每个位置(i,j)之前所有元素的和。 我们可以通过以下方式计算prefixSum: 1. 遍历矩阵a的每个位置(i,j),计算prefixSum[i][j]: - 如果i=0且j=0,则prefixSum[i][j] = a[i][j]; - 如果i=0且j≠0,则prefixSum[i][j] = prefixSum[i][j-1] + a[i][j]; - 如果i≠0且j=0,则prefixSum[i][j] = prefixSum[i-1][j] + a[i][j]; - 如果i≠0且j≠0,则prefixSum[i][j] = prefixSum[i-1][j] + prefixSum[i][j-1] - prefixSum[i-1][j-1] + a[i][j]。 2. 接下来,我们可以通过计算prefixSum来统计矩阵c的和。对于每个矩阵c,我们可以使用以下方式计算其和: - 定义矩阵c的左上角位置为(i1, j1),右下角位置为(i2, j2); - 如果(i1, j1)为原始矩阵a的左上角,则c的和为prefixSum[i2][j2]; - 如果(i1, j1)为原始矩阵a的第一行,则c的和为prefixSum[i2][j2] - prefixSum[i2][j1-1]; - 如果(i1, j1)为原始矩阵a的第一列,则c的和为prefixSum[i2][j2] - prefixSum[i1-1][j2]; - 其他情况下,c的和为prefixSum[i2][j2] - prefixSum[i1-1][j2] - prefixSum[i2][j1-1] + prefixSum[i1-1][j1-1]。 通过以上的方法,我们可以编写代码来实现这个算法。代码的时间复杂度为O(M*N),其中M和N分别为原始矩阵a的行数和列数。因此,我们可以通过这个方法高效地解决蓝桥杯统计矩阵c问题。

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

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值