直接给你讲的清清楚楚,明明白白
2024-06-20 17:55:16
发布于:湖北
57阅读
0回复
0点赞
① 正方形个数
假设每个正方形的边长为均为1,那么第 i 行,第 j 列的正方形右下角坐标就是(i,j)
一个 i 行 j 列的棋盘中正方形的个数 = 其中每一个正方形右下角 行列数最小值之和 (min( i , j )之和)
②:矩形个数(题目要求:正方形不属于矩形)
广义上的矩形是包括正方形的,所以我们先求出广义上矩形的个数,求完后再减去对应的正方形个数即可
一个 i 行 j 列的棋盘其中广义上矩形个数 = 其中 每一个 正方形右下角 行列数之积 的和((i * j)之和 )
#include<bits/stdc++.h>
using namespace std;
int zfx(int n,int m){
int gs = 0;
for(int i = 1;i <= n;i++){ // i行:行号为0时实际上没有正方形
for(int j = 1;j <= m;j++){ //j列 :列号为0时实际上也没有正方形
gs += min(i,j); //将行列号中的最小值累加起来就是正方形个数
}
}
return gs;
}
int cfx(int n,int m){
int gs = 0;
for(int i = 1; i <= n;i++){ // i行:行号为0时实际上没有矩形
for(int j = 1;j <= max m;j++){ //j列 :列号为0时实际上也没有矩形
gs += i*j; //将每一个行列号的积累加起来
}
}
return gs-zfx(n,m); //矩形个数-正方形个数=长方形个数
}
int main(){
int n ,m ;
cin >> n>> m;
cout <<zfx(n,m) << " "<<cfx(n,m);
}
全部评论 1
诶,你用的函数名和我一模一样欸!
2024-10-22 来自 广东
0
有帮助,赞一个