Ho provato questo algoritmo su CodeBlocks ed e’ funzionante, quando faccio la verifica sul correttore degli allenamenti mi dice “lunghezza errata”.
#include <iostream>
using namespace std;
int M,N;
char rettangolo[8][8];
ifstream in("input.txt");
ofstream out("output.txt");
bool palindromic(){
for (int i = 0; i < N; i++)
for(int j=0; j < M/2; j++){
if ((rettangolo[i][j] != rettangolo[M-i-1][i]) && (rettangolo[i][j] != '0') && (rettangolo[M-i-1][i] != '0'))
return false;
}
return true;
}
void stampa(int num){
for (int i = 0; i <= num; i++)
out << rettangolo[i] << endl;
}
void trovaPermutazioni(int inizio, int fine){
int j;
if (inizio >= fine){
if (palindromic()){
stampa(fine);
exit(0);
}
}
else{
for (j = inizio; j <= fine; j++){
swap(rettangolo[inizio], rettangolo[j]);
trovaPermutazioni(inizio+1, fine);
swap(rettangolo[inizio], rettangolo[j]);
}
}
}
int main()
{
in >> M >> N;
for (int i = 0; i < M; i++){
char temp[10];
in >> temp;
for (int j = 0; j < N; j++){
rettangolo[i][j] = temp[j];
}
}
trovaPermutazioni(0, M-1);
return 0;
}