题目描述
blablabla !
样例
from collections import Counter
n,m=map(int,input().split())
matrix=[list(map(int,input().split()))for _ in range(n)]
def find_pair(matrix):
res=0
for k in range(-(m-1),n): #从左下到右上的直角坐标系的正对角线,满足i-j=k,也可以j-i=k。这里要自己写写画图好理解
i,j=k*(k>0),-k*(k<0) #这个写法表示,当k取正数时,此时,i应有值,j为0,这是起始点。
c=Counter()
while i<n and j<m:
c[matrix[i][j]]+=1
i+=1
j+=1
for v in c.values():
res+=v*(v-1) #这里是排列是有方向的,对于有k个相同的对角数,对于每一个对角数,都能跟剩下的k-1个对角数构成对子。故乘k
return res
print(find_pair(matrix)+find_pair([matrix[i][::-1]for i in range(n)]))
算法1
(暴力枚举) O(n2)
blablabla
时间复杂度
参考文献
C++ 代码
blablabla
算法2
(暴力枚举) O(n2)
blablabla
时间复杂度
参考文献
C++ 代码
blablabla