Bonjour!
Je cherche à résoudre un exo d'algo en c++, voici l'énoncé ;
Cliquez pour afficher
J'ai fait ce code qui marche bien, seulement, les tests du code par le serveur (site France IOI) me refuse 4 tests car mon programme, il semblerait, est trop gourmand en mémoire.
Si quelqu'un a une idée pour aborder le sujet différemment ou pour diminuer la mémoire utilisée!Code:#include <iostream> using namespace std; int main(){ int nb; cin>>nb; if(nb<1 || nb>20) return 0; int tab[nb][nb], sommel=0, sommeTl=0, sommec=0, sommeTc=0, sommeD=0, sommeD1=0; for(int i=0; i<nb; i++){ for(int j=0; j<nb; j++){ cin>>tab[i][j]; sommel+=tab[i][j]; } if(i==0) sommeTl=sommel; if(sommel!=sommeTl){ cout<<"no"; return 0; } sommel=0; } int nombre[9]={0}; for(int i=0, k=nb-1; i<nb; i++, k--){ sommeD+=tab[i][i]; sommeD1+=tab[k][k]; for(int j=0; j<nb; j++){ nombre[tab[i][j]-1]++; sommec+=tab[j][i]; } if(i==0) sommeTc=sommec; if(sommec!=sommeTc){ cout<<"no"; return 0; } sommec=0; } if(sommeTc!=sommeTl || sommeD!=sommeD1 || sommeD!=sommeTc){ cout<<"no"; return 0; } for(int i=0; i<9; i++){ if(nombre[i]!=1){ cout<<"no"; return 0; } } cout<<"yes"; return 0; }
Exemple d'une erreur qu'il me met 4 fois la même :
Je pense aussi que ma méthode pour tester s'il y a à chaque fois qu'une seule fois un chiffre est pas bonne!Votre programme a échoué à la suite d'un accès mémoire en dehors des zones réservées, ou d'un dépassement de la limite de mémoire.
Votre programme s'est terminé à la suite d'une erreur. Cela peut venir d'une des raisons suivantes :
Votre programme a dépassé la limite de mémoire autorisée pour ce problème, que ce soit sous la forme de variables statiques, d'allocations dynamiques, ou bien de la pile.
Votre programme a tenté de faire un accès mémoire en dehors des zones allouées.
-----