9.7携程笔试第二题

输入一个n,m,代表接下来输入的矩阵有n行m列
然后输入n行m列的矩阵字符,例如:
y o u
o u r
然后,计算能够组成直角三角形的个数,直角三角形的三个角必须分别是y,o,u,直角一定是在矩阵中的点上的
最后,一共有多少个这样的三角形?

其实我当时是有思路的,但是写成了shit山,真的调不回来了

思路是统计每行有多少个y o u然后分类讨论

#2
while(1):
    line = input().strip()
    if len(line)<=0:break
    line = line.split(' ')
    n,m = int(line[0]),int(line[1])
    matrix = []
    for _ in range(n):
        s = input().strip().split(' ')
        matrix.append(list(s))
    row_y,row_o,row_u = [0]*(n),[0]*(n),[0]*(n)
    col_y,col_o,col_u = [0]*(m),[0]*(m),[0]*(m)
    for i in range(n):
        row_y[i],row_o[i],row_u[i] = matrix[i].count('y'),matrix[i].count('o'),matrix[i].count('u')
    for j in range(m):
        y,o,u = 0,0,0
        for i in range(n):
            y+=(1 if matrix[i][j]=='y' else 0)
            o+=(1 if matrix[i][j]=='o' else 0)
            u+=(1 if matrix[i][j]=='u' else 0)
        col_y[j],col_o[j],col_u[j] = y,o,u
    res = 0
    for i in range(n):
        for j in range(m):
            if matrix[i][j]=='y':res+= (row_o[i]*col_u[j] + row_u[i]*col_o[j])
            elif matrix[i][j]=='o':res+= (row_y[i]*col_u[j]+row_u[i]*col_y[j])
            elif matrix[i][j]=='u':res+= (row_y[i]*col_o[j]+row_o[i]*col_y[j])
    print(res)
            

#携程#
全部评论

相关推荐

头像
05-27 20:32
已编辑
深度学习
工行数据中心 偏运维养老 到手可能18w
点赞 评论 收藏
转发
5 6 评论
分享
牛客网
牛客企业服务