Dibujo CCF-CSP 201409-2

El problema se describe
  en un documento que define un sistema de coordenadas rectangular. Dibuje un rectángulo de (x1, y1) a (x2, y2) para pintar el área entre el rango de coordenadas horizontales de x1 a x2 y el rango de coordenadas verticales de y1 a y2. Color.
  La siguiente figura muestra un ejemplo de dibujo de dos rectángulos. El primer rectángulo es (1,1) a (4, 4), representado por verde y morado. El segundo rectángulo es (2, 3) a (6, 5), que está representado por azul y púrpura. En la figura, se pinta un total de 15 unidades de área, de las cuales la parte púrpura se pinta dos veces, pero solo una vez al calcular el área. En el proceso de pintura real, todos los rectángulos se pintan en un color uniforme, y los diferentes colores que se muestran en la figura son solo por conveniencia.
Ilustración de esta pregunta.
  Dados todos los rectángulos que se dibujarán, cuántas unidades del área total se pintarán.
Formato de entrada
  La primera línea de entrada incluye un número entero n, que representa el número de rectángulos que se dibujarán.
  En las siguientes n líneas, cada línea tiene 4 enteros no negativos, que representan respectivamente las coordenadas horizontal y vertical de la esquina inferior izquierda del rectángulo a dibujar, y las coordenadas horizontal y vertical de la esquina superior derecha.
El formato de salida
  genera un número entero que indica cuántas unidades de área están pintadas.
Entrada de muestra
2
1 1 4 4
2 3 6 5
Salida de muestra
15
Evaluación de caso de uso escala y convención
  1 <= n <= 100, 0 <= abscisa, ordenada <= 100.

Resumen de la experiencia:
dado que las coordenadas horizontal y vertical tienen un rango (no menor que 0 o mayor que 100), puede crear una matriz bidimensional, asignar las coordenadas coordinadas por color a 1 (es decir, marcar), y luego atravesar la matriz y agregar Eso es todo
Nota: Marca de subíndice de matriz.

Código C ++:

#include<bits/stdc++.h>
#define N 101
using namespace std;
int table[N][N];
int main() {
	int n,sum = 0;
	scanf("%d",&n);
	while(n--){
		int x1,y1,x2,y2;
		scanf("%d %d %d %d",&x1,&y1,&x2,&y2);
		for(int i=x1;i<x2;i++){
			for(int j=y1;j<y2;j++){
				table[i][j] = 1;
			}
		}
	}
	for(int i=0;i<N;i++){
		for(int j=0;j<N;j++){
			sum += table[i][j];
		}
	}
	printf("%d",sum);
	return 0;
}
Publicados 111 artículos originales · ganado elogios 2 · Vistas 3533

Supongo que te gusta

Origin blog.csdn.net/m0_38088647/article/details/100538013
Recomendado
Clasificación