JosepRivaille

P45484: Quadrat màgic

May 28th, 2015
1,200
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.23 KB | None | 0 0
  1. #include <iostream>
  2. #include <vector>
  3. using namespace std;
  4.  
  5.  
  6. typedef vector< vector<int> > Matrix;
  7.  
  8. bool quadrat_magic(const vector< vector<int> >& t) {
  9.     int tam = t.size();
  10.     int aux_comp = 0;
  11.     for (int i = 0; i < tam; ++i) {
  12.         aux_comp += t[i][0];
  13.     }
  14.     //Horitzontal
  15.     for (int i = 0; i < tam; ++i) {
  16.         int suma = 0;
  17.         for (int j = 0; j < tam; ++j) {
  18.             suma += t[i][j];
  19.         }
  20.         if (suma != aux_comp) return false;
  21.     }
  22.     //Vertical
  23.     for (int j = 0; j < tam; ++j) {
  24.         int suma = 0;
  25.         for (int i = 0; i < tam; ++i) {
  26.             suma += t[i][j];
  27.         }
  28.         if (suma != aux_comp) return false;
  29.     }
  30.     //Diagonal 1
  31.     int i = 0;
  32.     int j = 0;
  33.     int suma = 0;
  34.     while (i < tam && j < tam) {
  35.         suma += t[i][j];
  36.         ++i;
  37.         ++j;
  38.     }
  39.     if (suma != aux_comp) return false;
  40.     //Diagonal 2
  41.     i = tam-1;
  42.     j = 0;
  43.     suma = 0;
  44.     while (i >= 0 && j < tam) {
  45.         suma += t[i][j];
  46.         ++j;
  47.         --i;
  48.     }
  49.     if (suma != aux_comp) return false;
  50.     //Tots els nombres fins a n²
  51.     for (int k = 1; k <= tam*tam; ++k) {
  52.         bool found = false;
  53.         for (i = 0; i < tam && not found; ++i) {
  54.             for (j = 0; j < tam && not found; ++j) {
  55.                 if (not found && t[i][j] == k) found = true;
  56.             }
  57.         }
  58.         if (not found) return false;
  59.     }
  60.     //Tot correcte
  61.     return true;
  62. }
  63.  
  64. //JosepRivaille
Advertisement
Add Comment
Please, Sign In to add comment