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)#携程#