Cpp题目描述file20181028025326_20181028png如图所示已知一个矩形的右上顶点坐标 ��WH一个圆形的圆点坐标 ��xy 以及半径 �r判断这个圆是否全部在该矩形内。输入格式输入只有一行是五个整数 �����WHxyr输出格式若这个圆全部在矩形之内输出 ���Yes否则输出 ��No输入输出样例样例 1输入样例 复制5 4 2 2 1输出样例 复制Yes数据范围与提示−1
解题思路: 根据题目要求,判断圆是否全部在矩形内,可以分为以下几种情况:
- 圆心在矩形内部,并且圆的半径小于等于矩形的宽度和高度的一半。
- 圆心在矩形内部,并且圆的半径小于等于矩形的宽度和高度的一半,但是圆的边界与矩形的边界相交。
- 圆心在矩形内部,并且圆的半径大于矩形的宽度和高度的一半,但是圆的边界与矩形的边界相交。
- 圆心在矩形内部,并且圆的半径大于矩形的宽度和高度的一半,但是圆的边界与矩形的边界不相交。
- 圆心在矩形外部,但是圆的边界与矩形的边界相交。
- 圆心在矩形外部,并且圆的边界与矩形的边界不相交。
根据以上分析,可以得到以下解题思路:
- 判断圆心是否在矩形内部,如果不在则直接输出"No"。
- 判断圆的半径是否小于等于矩形的宽度和高度的一半,如果是则输出"Yes"。
- 判断圆的边界是否与矩形的边界相交,如果是则输出"Yes",否则输出"No"。
具体实现:
- 读取输入数据。
- 判断圆心是否在矩形内部,如果圆心的横坐标大于等于矩形的左上顶点的横坐标,并且小于等于矩形的右上顶点的横坐标,圆心的纵坐标大于等于矩形的左上顶点的纵坐标,并且小于等于矩形的右上顶点的纵坐标,则圆心在矩形内部。
- 如果圆心在矩形内部,则判断圆的半径是否小于等于矩形的宽度和高度的一半。
- 如果圆心在矩形内部,并且圆的半径小于等于矩形的宽度和高度的一半,则输出"Yes"。
- 如果圆心在矩形内部,并且圆的半径大于矩形的宽度和高度的一半,则判断圆的边界是否与矩形的边界相交。
- 如果圆的边界与矩形的边界相交,则输出"Yes",否则输出"No"。
代码实现如下:
#include <iostream>
using namespace std;
int main() {
int W, H, x, y, r;
cin >> W >> H >> x >> y >> r;
// 判断圆心是否在矩形内部
if (x >= 0 && x <= W && y >= 0 && y <= H) {
// 圆心在矩形内部
// 判断圆的半径是否小于等于矩形的宽度和高度的一半
if (r <= W/2 && r <= H/2) {
cout << "Yes" << endl;
} else {
// 判断圆的边界是否与矩形的边界相交
if ((x-r <= 0 || x+r >= W) && (y-r <= 0 || y+r >= H)) {
cout << "Yes" << endl;
} else {
cout << "No" << endl;
}
}
} else {
// 圆心在矩形外部
// 判断圆的边界是否与矩形的边界相交
if ((x-r <= 0 || x+r >= W) && (y-r <= 0 || y+r >= H)) {
cout << "Yes" << endl;
} else {
cout << "No" << endl;
}
}
return 0;
}
``
原文地址: https://www.cveoy.top/t/topic/iShm 著作权归作者所有。请勿转载和采集!