统计方形(暴力枚举)

洛谷P2241-统计方形

题目描述:

有一个 n×m 方格的棋盘,求其方格包含多少正方形、长方形(不包含正方形)。

java 复制代码
import java.util.*;
public class Main {
    public static void main(String[] args) {
		Scanner in=new Scanner(System.in);
		int n=in.nextInt();
		int m=in.nextInt();
		int sum=0,square=0;
		for(int i=1;i<=n;i++)
			for(int j=1;j<=m;j++){
				//sum为所有矩形总数
				sum += i * j;
				//square为正方形个数
				square += i < j ? i : j;	
			}
		//输出正方形数 和 矩形数(不包括正方形)
		System.out.println(square+" "+(sum-square));
	   
    }
}

测试用例:输入:2 3 输出:8 10


思路:

所有方形的个数=正方形的个数+长方形的个数。对于任意一个n行m列的矩形,以这个方形右下角的那个块作为要在矩形内选择正方形或长方形的右下角,则正方形的个数为min(i,j),长方形的个数为i∗j

解释如下:

对于一个n行m列的矩形,右下角的块必选,则能和这个块组成的正方形的右上角块全在这个主对角线上,而对角线上块的数量就是min(i,j)。对于矩形来说,n行m列的矩形内所有点都能和右下角的这个点构成长方形,所以长方形的数量就是i*j。

相关推荐
t1987512818 小时前
基于多尺度特征融合与自适应权重优化的水下图像对比度与边缘增强MATLAB方法
开发语言·matlab
JustMove0n18 小时前
互联网大厂Java面试全流程问答及技术详解
java·jvm·redis·mybatis·dubbo·springboot·多线程
iFlyCai18 小时前
数据结构与算法之希尔排序
数据结构·算法·排序算法
SimonKing18 小时前
5分钟学会!把代码从本地推送到 GitHub,就是这么简单
java·后端·程序员
玹外之音18 小时前
Spring AI 11 种文档切割策略全解析
java·spring·ai编程
lcreek18 小时前
LeetCode2208. 将数组和减半的最少操作次数、LeetCode2406.将区间分为最少组数
python·算法
shehuiyuelaiyuehao18 小时前
算法1,移动零
数据结构·算法·排序算法
Java练习两年半18 小时前
互联网大厂 Java 求职面试:技术栈与微服务深度解析
java·微服务·面试·技术栈
shehuiyuelaiyuehao19 小时前
算法2,复写零
数据结构·算法
像污秽一样19 小时前
算法设计与分析-算法效率分析基础-习题1.1
c语言·数据结构·c++·算法