还是排列组合。只要知道这个:对于这个棋盘的小矩形,假设是a*b的矩形,那长为a的边在长为N的边中共有N-a+1种选择方式,而a可以取1~N的所有数值,因此对于长的取法是sigma(i=1~N,i) = N*(N+1)/2。同样宽也能取M*(M+1)/2种,于是子矩形可以有M*(M+1)*N*(N+1)/4种。而子正方形的取法就是N*M+(N-1)*(M-1)+...+(N-M+1)*1(如果N>M)
因此很容易写出程序:

















|
还是排列组合。只要知道这个:对于这个棋盘的小矩形,假设是a*b的矩形,那长为a的边在长为N的边中共有N-a+1种选择方式,而a可以取1~N的所有数值,因此对于长的取法是sigma(i=1~N,i) = N*(N+1)/2。同样宽也能取M*(M+1)/2种,于是子矩形可以有M*(M+1)*N*(N+1)/4种。而子正方形的取法就是N*M+(N-1)*(M-1)+...+(N-M+1)*1(如果N>M)
因此很容易写出程序: