欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

华为笔试

程序员文章站 2022-07-13 14:20:24
...

团建活动智能分组器

■**

题目描述

**
个公司做团建活动,排成1个M行N列的队形。左上角的同事编号为(0, 0),右下角的同事编号为(M-1, N-1)。为了打散队伍重新分组。从队列左上角同事开始从1开始报数,最外圈的同事按顺时针报数。外圈同事全部报完,内圈的同事按同样规则继续报数。个位数为7且十位数为奇数被挑选出来作为特战队员。请设计一个计算的方法,入参是两个大于等于10且小于等于1000的整数,M和N。请按报数顺序输出特战队员的编号列表(N2的维数组)非法输入请返回内容为空的数组。

请设计一个计算的方法, 入参是两个大于等于10且小于等1000的整数N和N。请按报数顺序输出特战队员的编号列表(N’2的二维数组)
非法输入请返回内容为空的数组。
输入描述:
入参是两个整数M和N,值范围为: [10,1000]。 单空格分格.格式为10
10
输出描述:
请按报数顺序输出特战队员的编号列表(N*2的二维数组)
非法输入请返回内容为空的数组。
输出样例: [[7,9], [1,1], [8,2],[7,51,[4,41]

import numpy as np
def bsm(m,n):
    a=np.zeros((m,n))
    p = 0
    q = n - 1
    s=m-1
    t = 1
    while p < q:
        for i in range(p, q):
            a[p,i] = t
            t += 1

        for i in range(p, q):
            a[i,q] = t
            t += 1

        for i in range(s, p, -1):
            a[s,i] = t
            t += 1

        for i in range(s, p, -1):
            a[i,p] = t
            t += 1
        p += 1
        q -= 1
        s-=1
    if q == p:
        a[p,p] = t
    return a


def sum(m,n):
    num=list(range(1,m*n+1))
    a=[]
    for i in num:
        if i%10==7 and int(i/10)%2==1:
            a.append(i)
    if a==[]:
        print('无')
    return a
def shuru():
    a, b = list(input('请输入数组并空格隔开:').split())
    a = int(a)
    b = int(b)
    return a, b




if __name__ == '__main__':
    # 测试代码
    a,b=shuru()
    matrix = bsm(a,b)
    a=sum(a,b)
    print(matrix)

    d=[]
    for i in a:
        c = []
        a,b=list(np.where(matrix ==i))
        c.append(a[0])
        c.append(b[0])
        d.append(c)
    print(d)


还有不完整的,自己练习,大家如果有更好的让我瞅瞅呀,谢谢