codeup ver la televisión (C ++)

título Descripción

vacaciones de verano, Xiao Ming, finalmente feliz viendo la televisión. Pero Xiao Ming programas favoritos demasiado, que quiere ver la mayor parte del programa completo.
Ahora ha puesto su horario de emisión programa de televisión favorito para usted, usted puede ayudarle a organizarlo?

entrada

Entrada de prueba que comprende una pluralidad de conjuntos de datos. La primera línea de cada entrada es un número entero n (n <= 100), el número total de programa preferido Xiaoming figura.
Siguiente n líneas, cada línea de entrada dos enteros SI y EI (1 <= i <= n), denota el i-ésimo horas de inicio del programa y finales, con el fin de simplificar el problema, cada vez con un número entero positivo.
Cuando n = 0, el extremo de entrada.

exportación

Para cada número de entrada y salida se puede ver el programa de televisión completa.

de entrada de muestra  Copia

12 
1 3 
3 4 
0 7 
3 8 
15 19 
15 20 
10 15 
8 18 
6 12 
5 10 
4 14 
2 9 
0

Un ejemplo de salida de copia

5

Ideas resolución de problemas: Este es un problema codiciosos intervalo, primero de todo el período del programa están dispuestas en el mejor de los casos (es decir, hora de inicio primera entrada programada de la última versión del programa, si la misma hora de inicio, hora de finalización está prevista para los primeros sí propósito del programa. para asegurar que el último programa visto, el programa se queda delante de los más largos; intervalo de tiempo más corto también seleccionar un programa, de manera que hay más programas asignados a más); a continuación, un primer periodo de tiempo como un punto de partida (un primer período de tiempo debe ser opcional), atravesando el período restante, una hora del final del periodo del programa <= último período en que la hora de inicio del programa, el número de programas puede ser programado en 1, hasta que todos los programas han atravesado. (Programa de secuencia Vertical se distingue por período de tiempo después de la clasificación por tiempo en el eje de tiempo no es distinguible)

Código es el siguiente:

#include<bits/stdc++.h>
using namespace std;
struct show{
	int start;
	int end;
};
bool cmp(show a,show b){  // 从开始时间排序 
	if(a.start != b.start) return a.start > b.start;  // 若开始时间不同,开始时间晚的排在最前面 (给前面的节目留下更多的时间) 
    else return a.end < b.end;  // 若开始时间相同,结束时间最早的去(即开始到结束时间间隔最短的)排在前面
}
int main(){
	int n;
	while(scanf("%d",&n),n){
		show showes[n];
		for(int i = 0; i < n; i++){
			scanf("%d %d",&showes[i].start,&showes[i].end);
		}
		sort(showes,showes + n,cmp);
		// 排序好的第一个节目是一定可以选择的
		int ans = 1;  // 已经有一个节目可以选择
		int lastStart = showes[0].start;   
		for(int i = 1; i < n; i++){   // 从第二个节目开始判断是否能完整观看 
			if(showes[i].end <= lastStart){   // 当第一个节目的开始时间 大于等于 下一个节目的结束时间时,符合条件 
				ans++;
				lastStart = showes[i].start;
			} 
		}  
		printf("%d\n",ans);
	}
} 

 Tal puede ordenar: orden ascendente de acuerdo a la hora de finalización, la hora de finalización es temprano en la primera fila (de izquierda a la parte posterior del programa más tiempo), y luego en orden descendente de acuerdo con la hora de inicio, la hora de inicio es posterior a la aprobación de la gestión delante (para garantizar el intervalo de tiempo más corto); la hora de finalización de un tiempo de inicio del programa se determina menor o igual al siguiente programa, si cumplen la condición, el resultado se incrementa en uno.

Código es el siguiente:

#include<bits/stdc++.h> 
using namespace std;
struct show{
	int start;
	int end;
};
bool cmp(show a,show b){
	if(a.end != b.end) return a.end < b.end;  // 升序 
	else return a.start > b.start;   // 降序 
}
int main(){
	int n;
	while(scanf("%d",&n),n){
		show showes[n];
		for(int i = 0; i < n; i++){
			scanf("%d %d",&showes[i].start,&showes[i].end);
		}
		sort(showes,showes + n,cmp);
		// 排序好的第一个节目是一定可以选择的
		int ans = 1;  // 已经有一个节目可以选择
		int lastEnd = showes[0].end;   
		for(int i = 1; i < n; i++){   // 从第二个节目开始判断是否能完整观看 
			if(showes[i].start >= lastEnd){
				ans++;
				lastEnd = showes[i].end;
			}
		}  
		printf("%d\n",ans);
	}
} 

 

Publicado 32 artículos originales · ganado elogios 2 · Vistas 1612

Supongo que te gusta

Origin blog.csdn.net/qq_38969094/article/details/104369104
Recomendado
Clasificación