华为通用软件上机笔试2020年3月4日(python版)

  1. 矩阵翻转

题目描述:
– 输入一个N阶方阵(0<N<10),输出此方阵顺时针旋转M(0<=M<=10000)次后的方阵
– 旋转举例:(如下四个三阶方阵从上到下为数字围绕中心顺时针旋转)
1 2 3
4 5 6
7 8 9

7 4 1
8 5 2
9 6 3

9 8 7
6 5 4
3 2 1

3 6 9
2 5 8
1 4 7
输入描述:
(1) 输入第一行一个正整数N (0<N<10)
(2) 接下来N行每行N个整数用空格分开,为方阵的数据
(3) 接下来一行一个正整数M (0<=M<=10000)
说明:不用考虑异常输入,所有输入都是正常的,严格遵从取值范围
输出描述:
(1) N行,每行N个整数,用空格分开,为旋转后的数据
示例1:
– 输入
3
1 2 3
4 5 6
7 8 9
2
– 输出
9 8 7
6 5 4
3 2 1

import sys

while True:
    try:
        N = int(sys.stdin.readline().strip())  # N行,每行N个整数
        list_ = []
        for i in range(N):
            line = sys.stdin.readline().strip().split()  # [1,2,3]
            list_.append(line)
        M = int(sys.stdin.readline().strip())  # 顺时针旋转M次
        t = M % 4

        if t == 0:
            for i in range(N):
                temp = list_[i]
                print(' '.join(temp))
        elif t == 1:
            for i in range(N):
                temp = []
                for j in list(reversed(range(N))):
                    temp.append(list_[j][i])
                print(' '.join(temp))
        elif t == 2:
            for i in list(reversed(range(N))):
                temp = []
                for j in list(reversed(range(N))):
                    temp.append(list_[i][j])
                print(' '.join(temp))
        else:
            for i in list(reversed(range(N))):
                temp = []
                for j in range(N):
                    temp.append(list_[j][i])
                print(' '.join(temp))
    except:
        break
  1. 分礼物

题目描述
圣诞节到了,城堡里有k个小朋友,圣诞老人口袋里带了n件无差别的小礼物,请帮圣诞老人处理:将n个无差别的礼物分给k个小朋友的分法问题

给定n和k,数出分法种数,并枚举所有的分法

输出描述
仅一行,包含两个证书n(0 <= n <= 10)和k(0<= k<= 10), n 表示礼物的数量,k表示小朋友的数量

测试案例
输入:3 2

输出:

4
***|
**|*
*|**
|***
def deliver_presents(index, n, k, path):
    if index == a:
        res.append(path)
        return
    if n > 0:
        deliver_presents(index + 1, n - 1, k, path + "*")
    if k > 0:
        deliver_presents(index + 1, n, k - 1, path + "|")


while True:
    try:
        l_tmp = input().split()
        n = int(l_tmp[0])  # 礼物数量
        k = int(l_tmp[1])  # 小朋友数量
        res = []
        a = n + k - 1
        deliver_presents(0, n, k - 1, "")
        print(len(res))
        for i in range(len(res)):
            print(res[i])
    except:
        break

第三题没做出来,以后有机会更新。。。

  • 2
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值