每日题解-8

文章描述了一个编程问题,要求计算n*m棋盘中的正方形和长方形数量。通过四重循环遍历所有可能的矩形,当边长相等时计数正方形,否则计数长方形。给定的例子是n=2,m=3的情况,分别有8个正方形和10个长方形。提供的C++代码实现了这一逻辑。
摘要由CSDN通过智能技术生成

说明
设有一个n*m方格的棋盘(1≤m,n≤100)。
求出该棋盘中包含多少个正方形、多少个长方形(不包括正方形)。
例如:

   当n=2,m=3时

正方形的个数有8个,即边长为1的正方形有6个,边长为2的正方形有2个。
长方形的个数有10个:
2x1的长方形有4个;
1x2的长方形有3个;
3x1的长方形有2个;
3x2的长方形有1个。
输入格式
每个测试文件只包含一组测试数据,每组输入两个正整数n和m。

输出格式
对于每组输入数据,出该棋盘中包含的正方形个数和长方形个数。
样例
输入数据 1
2 3
输出数据 1
8 10
代码如下:

#include<iostream>
using namespace std;
int main(){
    int n,m;
    cin>>n>>m;
    int zfx=0,cfx=0;
    for(int i=0;i<=n;i++){  
        for(int j=0;j<=m;j++){
            for(int z=i+1;z<=n;z++){
                for(int l=j+1;l<=m;l++){
                    int c1=z-i;
                    int c2=l-j;
                    if(c1==c2) 
					zfx++;
                    else 
					cfx++;
                }
            }
        }
    }
    cout<<zfx<<" "<<cfx;
return 0;
}

解题思路:直接暴力循环,判断每个单元格的坐标即可,先开出四个for循环,直接精确到每个矩形的边长C1和C2,如果C1=C2,即正方形个数+1,反之长方形个数+1;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值