Descripción del problema
FJ en la mesa de arena a escribir alguna cadena como esta:
A1 = "A"
A2 = "ABA"
A3 = "ABACABA"
A4 = "ABACABADABACABA"
... ...
que puedes descubrir las reglas y que escriban todas las columnas que AN?
A1 = "A"
A2 = "ABA"
A3 = "ABACABA"
A4 = "ABACABADABACABA"
... ...
que puedes descubrir las reglas y que escriban todas las columnas que AN?
Formato de entrada
Sólo unos pocos: N ≤ 26.
Formato de salida
Por favor salida correspondiente cadena AN, a un carácter de nueva línea. La salida no debe contener espacio adicional o avance de línea, retorno de carro.
entrada de la muestra
3
Ejemplo de salida
punta de lanza
Pensando: Ejemplos del título se observa, se encuentran cada una tiene una simetría de cadena, n = 1, A es el centro de simetría a ella, n = 2, B es un centro de simetría en, n = 3, es el centro de simetría con C ...... simétrico y cada vez, se hacen en ambos lados de una cadena que consta de simetría, a fin de utilizar una función recursiva para resolver este problema.
1 #include <iostream> 2 usando espacio de nombres std; 3 4 clase print_string 5 { 6 pública : 7 int get_n () 8 { 9 cin >> n; 10 de retorno n; 11 } 12 13 void recursión ( int n) // 递归函数 14 { 15 si (n == 1 ) 16 { 17 cout << "Un " ; 18 es } . 19 el otro 20 es { 21 es recursión (N- . 1 ); 22 es T = ' A ' + N- . 1 ; 23 es COUT << T; 24 recursión (N- 1. ); 25 } 26 es } 27 privada : 28 int n-; 29 Char T; // para cada salida de control recursivo 30 }; 31 es 32 intprincipal ( void ) 33 { 34 print_string x; 35 int a; 36 a = x.get_n (); 37 x.recursion (a); 38 de retorno 0 ; 39 }
En cuanto a un código escrito en lenguaje C:
1 # include <stdio.h> 2 3 int main () 4 5 { 6 7 int i, j; 8 9 Char c [ 50 ] [ 1000 ]; 10 11 int n; 12 13 carbonilla CC = ' A ' ; 14 15 int count = 1 ; 16 17 int temp; 18 19 scanf ( " % d " , y n); 20 21 c [ 1 ] [ 1 ] = ' A ' ; 22 23 c [ 1 ] [ 2 ] = ' \ 0 ' ; 24 25 para (i = 2 ; i <= n; i ++ ) 26 27 { 28 29 temp = contar; 30 31 count = count * 2 + 1 ; 32 33 para (j = 1 ; c [i- 1 !] [J] = ' \ 0 '; j ++ ) 34 35 { 36 37 c [i] [j] = c [i- 1 ] [j]; 38 39 c [i] [j + temp + 1 ] = c [i- 1 ] [j]; 40 41 42 43 } 44 45 c [i] [temp + 1 ] = ++ cc; 46 47 c [i] [j + temp + 1 ] = ' \ 0 ' ; 48 49 } 50 51 52 53 para (i = 1 ;! C [n] [i] =' \ 0 ' ; i ++ ) 54 55 printf ( " % c " , c [n] [i]); 56 57 printf ( " \ n " ); 58 59 60 61 de retorno 0 ; 62 63 }
fuente original: https: //blog.csdn.net/a237653639/article/details/21323641