找正方形:(加法原理)
边长为1:n*m
边长为2:n-1*m-1
边长为3:n-2*m-2
……
最大到min(m,n),遍历求和即可
时间复杂度:O(min(m,n))
找长方形:(乘法原理)
枚举长方形可能的边长:1,2……n/1,2,……m;
边长为n的边上:边长为1的线段n条,边长为2的线段n-1条,边长为3的线段n-2条……
边长为m的边同理。
组成一个长方形只需要从上面两个边长集合中分别挑选出一条,
长方形个数:((a+1)a÷2)×((b+1)b÷2)
或者也可以认为:选边长是从n+1个端点中选择两个端点所以是C(n+1,2)*C(m+1,2)