正方形:边长为 iii 的正方形共有 (n−i+1)×(m−i+1)(n-i+1)\times(m-i+1)(n−i+1)×(m−i+1) 个,边长最长的正方形的边长为min(n,m)\min(n,m)min(n,m),公式代码为for (int i=1;i<=min(n,m);i++){ squ+=(n-i+1)*(m-i+1); }。
长方形:在n×mn\times mn×m的长方形中的矩形个数,等价于在 m+1m+1m+1 条行线中选首尾 222 行,在 n+1n+1n+1 条列线中选首尾 222 列所围成的方形数目,共有Cm+12×Cn+12C_{m+1}^2\times C_{n+1}^2Cm+12 ×Cn+12 个矩形,
公式为 m(m+1)n(n+1)4−正方形个数\dfrac{m(m+1)n(n+1)}{4}-正方形个数4m(m+1)n(n+1) −正方形个数。