Главная страница


ru.algorithms

 
 - RU.ALGORITHMS ----------------------------------------------------------------
 From : Kostya Sudilovsky                    2:452/64.4     13 Jun 2001  23:20:14
 To : Wowa Savin
 Subject : Магический квадpат
 -------------------------------------------------------------------------------- 
 
 
  Я заметил, что в Среда Июнь 13 2001, Wowa Savin писал:
 
  WS>>>    Дан квадpат NxN, где N - нечётно! Расположить в нём числа от
  WS>>> 1 до N^2, что бы их сyмма по веpтикали, гоpизонтали и диагоналям
  WS>>> были одинаковы!
  KS>> Распалогаеш цифpы бyквой Г,  считая что стенки пpозpачны:
  WS>  Hепpавильно:
 
 Блин, вот лапухнулся ;(
 
 вот на вскидку написал перебор для n=3 на c++:
 #include <iostream.h>
 #include <iomanip.h>
 int a[3][3],was[10]={0};
 void go(int i,int j){
   if (i==3) {
     if (a[0][0]+a[1][0]+a[2][0]==15 && // ветикали
         a[0][1]+a[1][1]+a[2][1]==15 && // лень в цикл запинуть
         a[0][2]+a[1][2]+a[2][2]==15 &&
         a[0][0]+a[1][1]+a[2][2]==15 && // диагонали
         a[0][2]+a[1][1]+a[2][0]==15){
       for (int ii=0;ii<3;ii++){
         for (int jj=0;jj<3;jj++)
           cout<<setw(10)<<a[ii][jj];
         cout<<'\n';
         }
       cout<<"------------------------------------------------------\n";
       };
     return;
     }
   for (a[i][j]=1;a[i][j]<=9;a[i][j]++) // если есть горизонать
     if (!was[a[i][j]] && (j!=2 || a[i][0]+a[i][1]+a[i][2]==15)){
     was[a[i][j]]=1;
     if (j==2) go(i+1,0); else go(i,j+1);
     was[a[i][j]]=0;
     }
 };
 void main(){ go(0,0); };
 
 И вот все маг. квадраты для n=3:
          2         7         6
          9         5         1
          4         3         8
 ------------------------------------
          2         9         4
          7         5         3
          6         1         8
 ------------------------------------
          4         3         8
          9         5         1
          2         7         6
 ------------------------------------
          4         9         2
          3         5         7
          8         1         6
 ------------------------------------
          6         1         8
          7         5         3
          2         9         4
 ------------------------------------
          6         7         2
          1         5         9
          8         3         4
 ------------------------------------
          8         1         6
          3         5         7
          4         9         2
 ------------------------------------
          8         3         4
          1         5         9
          6         7         2
 
 как видно в углу 1 брать нельзя :( в общем можно устроить перебор для поиска
 места для 1, а потом - как я расказывал, только попадаются случаи, когда цифры
 налаживаются, тогда надо применить симметричную Г:
 010    010      0*0 сим. 010    010    016    016 сим. 016    816
 
 000 -> 300  ->  300  ->  300 -> 350 -> 350 -> 350  ->  357 -> 357
 
 002    002      002      402    402    402    *02      402    492
 и того, сложность алгоритма - O(n^4) - вполне можно посчитать для n<100.
 
 для n>3 я не проверял - лень :) хотя проверить стоит.
                 Digitally yours, Sudilovsky Kostya.
 --- GoldED+/W32 1.1.4.5
  * Origin: Gomel State Univesity (2:452/64.4)
 
 

Вернуться к списку тем, сортированных по: возрастание даты  уменьшение даты  тема  автор 

 Тема:    Автор:    Дата:  
 Магический квадpат   Wowa Savin   11 Jun 2001 17:09:30 
 Магический квадpат   Kostya Sudilovsky   11 Jun 2001 23:14:53 
 Магический квадpат   Wowa Savin   13 Jun 2001 10:50:08 
 Магический квадpат   Sergey Michailov   13 Jun 2001 18:29:49 
 Магический квадpат   Kostya Sudilovsky   13 Jun 2001 23:20:14 
 Re: Магический квадpат   Ihor Bobak   13 Jun 2001 21:30:46 
 Магический квадрат   Max Alekseyev   13 Jun 2001 22:28:48 
 Магический квадpат   Dmitri Shankov   14 Jun 2001 01:14:14 
 Магический квадpат   Wowa Savin   15 Jun 2001 15:11:13 
 Магический квадpат   Wowa Savin   15 Jun 2001 16:31:12 
Архивное /ru.algorithms/22803b27d04f.html, оценка 3 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional