java有关于M*N矩形求解正方形长方形个数问题

我们知道在解决实际问题的时候来,方法有许多,可以运用公式,找规律,还可以自己找到一个合适的解题方法来解决这一类问题:

设有一个n*m方格的棋盘(1≤m,n≤100)。

求出该棋盘中包含多少个正方形、多少个长方形(不包括正方形)。

先有公式得:

经过寻找规律可以得

   
   
   

如图所示 正方形得个数为2*3+1*2+0*1=8

在如图所示:

   
   
   
   

正方形得个数为2*4+1*3+0*2=11

因而得出规律为:

边长乘积得递归求和。

那么举行的个数是怎么个规律来?

这个规律课是小编 找的哟

m*n*(m+1)*(n+1)/4--正方形得个数;

这个大家可以画图印证一下;

从而代码如下:

import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int N = sc.nextInt();    
        int M = sc.nextInt();    
        int sumz = 0;    
        int sumc = 0;        
        if (N > M) {            
        for (int i = M - 1; i >= 0; i--) 
        {                
            sumz += (N - i) * (M - i);        
            }        } 
        else {            
            for (int i = N - 1; i >= 0; i--) 
            {                
                sumz += (N - i) * (M - i);        
                }        }        
        sumc = N * M * (N + 1) * (M + 1) / 4 - sumz;    
        System.out.println(sumz + "," + sumc);

    }}

 

你可能感兴趣的:(java有关于M*N矩形求解正方形长方形个数问题)