趣味问题:画图(c++实现)

描述:在一个定义了直角坐标系的纸上,画一个(x1,y1)到(x2,y2)的矩形指将横坐标范围从x1到x2,纵坐标范围从y1到y2之间的区域涂上颜色。下图给出了一个画了两个矩形的例子。第一个矩形是(1,1) 到(4, 4),用绿色和紫色表示。第二个矩形是(2, 3)到(6, 5),用蓝色和紫色表示。图中,一共有15个单位的面积被涂上颜色,其中紫色部分被涂了两次,但在计算面积时只计算一次。在实际的涂色过程中,所有的矩形都涂成统一的颜色,图中显示不同颜色仅为说明方便。

给出所有要画的矩形,请问总共有多少个单位的面积被涂上颜色。

评测用例规模与约定

1<=n<=100,0<=横坐标、纵坐标<=100

输入:

输入的第一行包含一个整数n,表示要画的矩形的个数。

接下来n行,每行4个非负整数,分别表示要画的矩形的左下角的横坐标与纵坐标,以及右上角的横坐标与纵坐标。

输出:输出一个整数,表示有多少个单位的面积被涂上颜色。

input:2

          1 1 4 4 

    2 3 6 5output:15分析:每个单位可以看成一个坐标,我们使用坐标图中每个小正方形左下角坐标代表该正方形,这样整个坐标图可以用一个二维数组代替,如果染了色就大于0,未染色的为0,最后统计数组中不为0的数目即解决。
 1 #include<iostream>
 2 using namespace std;
 3 void input(int x1, int y1, int x2, int y2,int a[100][100])    //给数组赋值(染色)
 4 {
 5     for (int i = x1; i < x2; i++)
 6     {
 7         for (int j = y1; j < y2; j++)
 8             a[i][j]++;
 9     }
10 }
11
12 int main()
13 {
14     static int a[100][100];
15     int n, x1, y1, x2, y2;
16     cin >> n;
17     for (int i = 0; i < n; i++)
18     {
19         cin >> x1 >> y1 >> x2 >> y2;
20         input(x1, y1, x2, y2, a);
21     }
22     n = 0;
23     //检索不为0的数目
24     for (int i = 0; i < 100; i++)
25     {
26         for (int j = 0; j < 100; j++)
27         {
28             if (a[i][j] != 0)
29                 n++;
30         }
31     }
32     cout << n << endl;
33     system("pause");
34     return 0;
35 }

时间: 2024-10-13 09:14:06

趣味问题:画图(c++实现)的相关文章

Python 零基础 快速入门 趣味教程 (咪博士 海龟绘图 turtle) 2. 变量

大家在中学就已经学过变量的概念了.例如:我们令 x = 100,则可以推出 x*2 = 200 试试下面这段 Python 代码 1 import turtle 2 3 turtle.shape("turtle") 4 x = 100 5 turtle.forward(x) 6 turtle.left(45) 7 turtle.forward(2*x) 8 9 turtle.exitonclick() 运行上面的代码,小海龟将画出下面的图案 x = 100 声明了变量 x,并将它赋值为

画图软件中调整图像的大小

在打开Windows附件的画图软件时,有时候截屏.或者其它图形粘贴的大小不合式.需要调整图像的大小. 画图软件有两个界面可调整:内界面是蓝色背景中的白色矩形,外界面是画图软件的边框.内界面固定在边框内,但是长.宽可以通过鼠标拉伸. 拉伸时,鼠标为从右下至左上的斜线型.调整内界面才能调整图像的大小. 如果内界面和外界面边界基本重合,则需要将进度条向右下角汇聚,直至出现内边界的右下"角".从这个角出发,将内边界从下往上.从右往左 拉动,可以发现内边界能移动.通常,在内边界和外边界之间都保存

PHP利用GD库画图和生成验证码图片

首先得确定php.ini设置有没有打开GD扩展功能,测试如下 print_r(gd_info()); 如果有打印出内容如下,则说明GD功能有打开: Array ( [GD Version] => bundled (2.0.34 compatible) [FreeType Support] => 1 [FreeType Linkage] => with freetype [T1Lib Support] => 1 [GIF Read Support] => 1 [GIF Crea

数学趣味题(相邻同加同减问题)

想要弥补数学方面的知识于是我看了刘汝佳老师的算法艺术. 从简单开始在这里记录一下. 题目的描述 很容易理解但是让我想的话,我会感觉很困难. 似乎见到多了,对这种问题有一种天生的恐惧. 但是学习嘛,一点一点积累. 刘汝佳老师这样讲到. 先把8个点归为红色和蓝色两类. 相邻的点不在同一类中. 假设我们先看一下最下面的ABCD四个点,假设A点有a个麻烦子,B点有b个麻烦子,C点有c个,D点有d个. 我们先让A,B同时增加c个,然后让B,C同时减少c个,这样就C就没有了,而A中多了c个.这样我们就能把同

python_turtle模板画图

turtle简单画图所用到的代码: 1 turtle.showturtle() #画图板 2 turtle.screensize(2024,2000) #画图板大小 3 turtle.forward() #往前移动 4 turtle.right(90) #方向往左调整n度 5 turtle.left(30) #方向往右调整n度 6 turtle.write("hello") #写文字 7 turtle.goto(50,50) #坐标移动 8 turtle.penup() #抬笔 9 t

《学习opencv》笔记——关于一些画图的函数

画图函数 (1)直线cvLine函数 其结构 void cvLine(//画直线 CvArr* array,//画布图像 CvPoint pt1,//起始点 CvPoint pt2,//终点 CvScalar color,//颜色 int thickness = 1,//宽度 int connectivity = 8//反走样 ); 实例代码 #include <cv.h> #include <highgui.h> #include <stdio.h> int main

PHP画图的基本步骤GD库

一:PHP新建一个图片步骤: 1:创建画布: $im=imagecreatetruecolor(300,80) 2:定义颜色: $black=imagecolorallocate($im, 0, 0, 0); 3:填充颜色|文字信息: imagefill($im, 0, 0, $black); 4:生成图片: imagepng($im,"./data/01.png") 5:销毁图片: imagedestroy($im); 简单事例: 1 //1:创建一个画图资源(画布) 2 $im=i

c++趣味之变量名,颠覆所有教科书的VisualStudio

GCC不参与这次的趣味. 所有的教程都会告诉你,c++的变量名,类名,函数名都应该是字字母或下划线开头的字母.数字.下划线组合,像这样: int _abc123; 实际上,VisualStudio并不遵守这个规范,而是更宽泛,这些都可以: #include <stdio.h> #include <tchar.h> #define 如果 if #define 打印 printf #define 返回 return #define 开始 { #define 结束 } #define 主

Exercise: Slices (画图)

A Tour of Go Exercise: Slices https://tour.golang.org/moretypes/18 这道题目,提供了一个画图函数 (pic.Show), 可以生成图片. 这个函数,即 pic.Show(f func(int, int) [][]uint8), 可见,它接受一个函数做参数,题目要求的正是编写这个参数.答案如下: 这里面,依赖一个 package, 即 "golang.org/x/tour/pic" 我上 https://github.co