PAT L1-027 de alquiler (Ladder match), algunos de los problemas encontrados durante el almacenamiento.

problema:

El siguiente es el Sina micro-blog ha sido muy fuego de una imagen:
Aquí Insertar imagen Descripción
una línea de tiempo un grito de ayuda, alquiler de cómo esta ruptura. De hecho, este código es muy simple, índice es la matriz de índice de matriz arr, índice [0] = 2 corresponde matriz [2] = 1, el índice de [1] = 0 corresponde matriz [0] = 8, índice de [2] = 3 corresponde matriz [3] = 0, por lo que es fácil de conseguir ...... número de teléfono es 18013820100.

Esta pregunta requiere que usted escriba un programa que genera el código para cualquier número de teléfono - de hecho, siempre y cuando la parte delantera dos filas generadas en él, detrás del contenido es el mismo.

Formatos de entrada:

De entrada se le da un número de teléfono de 11 dígitos en una fila.

Los formatos de salida:

Dos líneas antes de que el número de entrada de código generado, en el que el arr digital debe ser dado en orden descendente.

de entrada de la muestra:

18013820100

Resultado de muestra:

int[] arr = new int[]{8,3,2,1,0};
int[] index = new int[]{3,0,4,3,1,0,2,4,3,4,4};

Algunas de sus propios problemas encontrados:

Esta pregunta no es difícil, sin embargo, empecé a pensar int matriz se mantiene bien este número 18013820100, el resultado de la tragedia apareció siguiente escenario. . . . . . . Ha ~ (incómoda) realmente hizo un error estúpido él! En ese momento él no reaccionó.
Aquí Insertar imagen Descripción
¿Por qué es esto?

Debido a una serie int puede almacenar un número de tipo int, int es el rango de -2147483648 a 2,147,183,648 matriz de almacenamiento a fin de utilizarlo como digital, en lugar de como un depósito que piensa.

Mis pensamientos:

  1. Una forma de entrada de un char s.
  2. A continuación, pasarlo al tipo int num.
  3. Entonces manera de énfasis, de-duplicación está marcado con una matriz bandera, [12], el indicador de inicio está en cero, cada entrada num [num] se determina si la bandera es 0, si se pone en 0 num st [12] en la matriz, y luego la bandera [num] = 1, en caso de un siguiente sentencia if en la misma, de modo que para lograr el efecto de deduplicación.
  4. A continuación, una vez con una especie de encargo en orden descendente.
  5. También hay que tener el número original con una matriz nu.
  6. A continuación, utilice dos bucles for para comparar la línea, a continuación, después de averiguar los resultados de una matriz para almacenar el resultado [12] en la línea.

La siguiente es mi idea de código de juego:

#include<bits/stdc++.h>
using namespace std;
int flag[12],st[12],nu[12]; 
bool cmp(int a,int b) {
	return a>b;
}
int main() {
	char s;
	int count=0,num,tot=0;
	for(int i=0; i<11; i++) {
		cin>>s;
		num=(int)(s-'0');
		nu[tot++]=num;
		if(flag[num]==0) {
			st[count++]=num;
			flag[num]=1;
		}
	}
	sort(st,st+count,cmp);
	int result[12],ans=0;
	for(int i=0; i<tot; i++) {
		for(int j=0; j<count; j++) {
			if(st[j]==nu[i]) {
				result[ans++]=j;
			}
		}
	}
	cout<<"int[] arr = new int[]{";
	for(int i=0; i<count-1; i++) {
		cout<<st[i]<<",";
	}
	cout<<st[count-1]<<"};";
	cout<<endl;
	cout<<"int[] index = new int[]{";
	for(int i=0; i<ans-1; i++) {
		cout<<result[i]<<",";
	}
	cout<<result[ans-1]<<"};";
	return 0;
}

Código es concisa, tomó no gracias!
¡Hey! Estaba demasiado platos. . . .

Publicado ocho artículos originales · ganado elogios 8 · visitas 205

Supongo que te gusta

Origin blog.csdn.net/xzy15703841578/article/details/105273221
Recomendado
Clasificación