在一个定义了直角坐标系的纸上,画一个(x1,y1)到(x2,y2)的矩形指将横坐标范围从x1到x2,纵坐标范围从y1到y2之间的区域涂上颜色。
下图给出了一个画了两个矩形的例子。第一个矩形是(1,1) 到(4, 4),用绿色和紫色表示。第二个矩形是(2, 3)到(6, 5),用蓝色和紫色表示。图中,一共有15个单位的面积被涂上颜色,其中紫色部分被涂了两次,但在计算面积时只计算一次。在实际的涂色过程中,所有的矩形都涂成统一的颜色,图中显示不同颜色仅为说明方便。
原题为2014年CCF
代码
#includeusing namespace std; void fun(bool a[101][101], int x1, int x2, int y1, int y2) { int x, y, temp; if (x1 > x2) { temp = x2; x2 = x1; x1 = temp; } if (y1 > y2) { temp = y2; y2 = y1; y1 = temp; } for (x = x1; x < x2; x++) { for (y = y1; y < y2; y++) { a[x][y] = 1; } } } int main() { int num,x,y, x1, y1, x2, y2; int s = 0; int i; bool a[101][101] = {}; cout<<"你打算涂几个小矩形:"; cin >> num; for (i = 0; i < num; i++) { cout << "请输入起点横坐标:"; cin >> x1; cout << "请输入起点纵坐标:"; cin >> y1; cout << "请输入终点横坐标:"; cin >> x2; cout << "请输入终点纵坐标:"; cin >> y2; fun(a, x1, x2, y1, y2); } for (x = 0; x < 101; x++) { for (y = 0; y < 101; y++) { s += a[x][y]; } } cout << "阴影部分面积为" << s << endl; return 0; }
输出结果
小结
老题新做,新增特性,加了函数fun可以使起点坐标大于终点坐标



