Rectangle Cutting c++

文章讨论了一个编程题目,要求在矩形内找到切割点以最大化面积,且可能有多种解。给出了解决方案并展示了C++代码实现。
摘要由CSDN通过智能技术生成

出题人:董老师

描述

坐标平面上有一个矩形。四个顶点的坐标分别为 (0,0) 、 (W,0) 、 (W,H) 和 (0,H) 。给你一个点 (x,y) ,它位于矩形内或矩形边上。我们将通过 (x,y) 画一条直线,将矩形切割成两部分。求面积不大于另一部分的那一部分的最大面积。此外,请确定是否有多种方法切割矩形并获得最大面积。

输入描述

输入内容由标准输入法提供,格式如下:
W H x y

输出描述

打印面积不大于另一部分面积的部分的最大可能面积,如果有多种方法切割矩形并达到最大值,则在 "1 "后打印,否则打印 “0”。

当打印区域的绝对误差或相对误差不超过 10−9 时,将判定为正确。

用例输入 1 

2 3 1 2

用例输出 1 

3.000000 0

用例输入 2 

2 2 1 1

用例输出 2 

2.000000 1

提示

限制因素
  • 1≤W,H≤109
  • 0≤x≤W
  • 0≤y≤H
  • 输入值均为整数。

样本输出 1

第 x=1 行给出了最优切割,其他行均未给出最优切割。

#include<bits/stdc++.h>  // 包含所有的标准库头文件
using namespace std;  // 使用标准命名空间

double w, h, x, y;  // 定义双精度浮点数变量 w、h、x、y

int main()
{
    // 输入矩形的宽度 w、高度 h、以及点的坐标 x、y
    cin >> w >> h >> x >> y;

    // 计算矩形的面积
    double s = w * h / 2;

    // 输出矩形的面积,保留 6 位小数
    printf("%.6lf ", s);

    // 判断点是否在矩形的中心,若是则输出 1,否则输出 0
    if(w / 2 == x && h / 2 == y)
        cout << 1 << endl;
    else
        cout << 0 << endl;

    return 0;  // 返回 0,表示程序正常结束
}

解析:

这题并不难。因为要想让他有多种可能,只能让(x, y)这个点在方形的中央。

值也只用一个s存储总面积——w*h/2,最后保留六位小数输出。

判断是否在中央也只用知道w/2和h/2是否分别等于x和y。

代码是我的老师让我手写的,可没有用AI。看我这么辛苦,就给我

点个赞吧!

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值