problema:
El siguiente es el Sina micro-blog ha sido muy fuego de una imagen:
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ó.
¿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:
- Una forma de entrada de un char s.
- A continuación, pasarlo al tipo int num.
- 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.
- A continuación, una vez con una especie de encargo en orden descendente.
- También hay que tener el número original con una matriz nu.
- 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. . . .