jitter Byte escrito: la obtención de un conjunto de todos los puntos en el conjunto P punto "máximo"

P es un entero de conjunto de puntos plano dado de dos dimensiones. En la definición de un punto P x, si x no cumple ninguno del punto P en la zona superior derecha de la x (coordenadas horizontal y vertical son mayores que x), que se llama "máximo". Encontrar una colección de todos los puntos "más grandes". (Abscisa y la ordenada todos los puntos no se repiten, en el eje de coordenadas rango [0,1e9) Endo)

La figura siguiente: punto sólido se establece para satisfacer las condiciones del punto. Por favor, encontrar el código que implementa todas las del conjunto P conjunto "máximo" de puntos y de salida.

Introduzca una descripción:

Un primer número de línea de entrada puntos de ajuste N, las siguientes N filas, cada número de fila representa dos puntos ejes X e Y. Para 50% de los datos, 1 <= N <= 10.000 ;
a 100% de los datos, 1 <= N <= 500.000 ;

Descripción Salida:

Output "grande" punto de ajuste, la forma de pequeño a grande de salida en el eje X, cada fila de dígitos representa dos puntos X e Y ejes.


输入例子1:

> 5 1 2 5 3 4 6 7 5 9 0

输出例子1:

> 4 6 7 5 9 0




Solución: en el y ordenadas en orden descendente, y luego pequeños a grandes x selectos, el valor de x es sin duda una gran relación del primero (en orden descendente y) más grande que el valor anterior de y, de manera que el punto "más grande" `


#include
#include
#include
#include
using namespace std;
nodo struct
{
int x;
y int;
};
cmp bool (n1 nodo, el nodo n2)
{
retorno n1.y> n2.y;
}
Nodo cabeceo [1000000];
int main ()
{
int n;
while (! scanf ( "% d", y n) = EOF)
{
for (int i = 0; i <n; i ++)
{
scanf ( "% d% d", y cabeceo [i] .x, y cabeceo [i] .y);
}
Sort (guiño, guiño + n, cmp);
int min = -1;
for (int i = 0; i <n; i ++)
{
si (NOD [i] .x> min)
{
min = cabeceo [i] .x;
printf ( "% d% d \ n", NOD [i] .x, NOD [i] .y);



return 0;
}


{Público Clase principal
// matriz de dos dimensiones, utilizando las siguientes dimensiones cuando el código quiere entrada un número arbitrario de caracteres separados por espacios cada
public static void main (String [] args) {

	Scanner sc=new Scanner(System.in);
	 int n=sc.nextInt();//获取点数
                             int a[][]=new int[n][1];
	//跳过这行换行符  
	sc.nextLine();	
	for(int i=0;i<n;i++){
	String str = sc.nextLine();   
	Scanner sc1 = new Scanner(str); 
	int j=0;
	while(sc1.hasNextInt()){
		a[i][j++]=sc1.nextInt();		
			}
	}

                           //已经获得数组,行值为x,列值为y


                          //对数组进行排序

   
                          //比较,如果该数x不小于前一个的x,则比较y,y较大为最大的
	for( int i=0;i<n-1;i++){


                                     if(a[i][0]<a[i+1][0]){
                                          if(a[i][1]<=a[i+1][1])
                                          System.out.println(a[i][1]);
                                          }else{ 
                                             if(a[i][0]=a[i+1][0]){

                                           if()
		while(a[i][j]!=0)
		System.out.print(a[i][j++]+"  ");
		System.out.println();
	}

}

}

Publicados 254 artículos originales · ganado elogios 23 · Vistas a 50000 +

Supongo que te gusta

Origin blog.csdn.net/qq_30242987/article/details/104713948
Recomendado
Clasificación