问题 C: 零基础学C/C++173——桌面窗体重叠
如图所示,我们分成两步,先写简单的:如果不重合,那么我们h[2]<=h[3] || h[1]>=h[4] || l[2]<=l[3] || l[1]>=l[4],然后输出0就好了
接下来是重合的部分:因为你输入了两行代码,但是电脑是不知道哪个是左窗体的,盲目的左减右有可能导致负数的出现(当然你可以abs取绝对值)。所以我们可以思考下什么情况下能保证不出现负数,答案当然是有序的情况下啦!你可以发现,不管怎么样H1,H2,H3,H4中间的两位一定是我们重叠的部分的左右边界,同理L1,L2,L3,L4也是一样。那么我们只需要排序一下去中间之差就能完美解决了。排序建议sort,快一点啦。
点击查看代码
/*结构体在本题中作用并不大,就先不用啦*/
#include <iostream>
#include <algorithm>
#include<math.h>
using namespace std;
int main ()
{
int h[5];
int l[5];
scanf("%d%d%d%d",&h[1],&h[2],&l[1],&l[2]);//ZUO YOU XIA SHANG
scanf("%d%d%d%d",&h[3],&h[4],&l[3],&l[4]);
if(h[2]<=h[3] || h[1]>=h[4] || l[2]<=l[3] || l[1]>=l[4]) cout<<"0"<<endl;
else
{
sort(h+1,h+5);//舍弃了H0,从H1——H4排序
sort(l+1,l+5);//舍弃了L0,从L1——L4排序
long long s=abs((h[3]-h[2])*(l[3]-l[2]));
cout<<s<<endl;
}
return 0;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 使用C#创建一个MCP客户端
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 按钮权限的设计及实现