Магический Квадрат 3*3

Тема в разделе "C/C++/C#", создана пользователем Nigrum-papilio, 9 фев 2014.

  1. Nigrum-papilio

    Nigrum-papilio New Member

    Регистрация:
    8 фев 2014
    Сообщения:
    1
    Симпатии:
    0
    Магический квадрат 3*3 заполненый цифрами от 1 до 9, где сума в каждой строчке, столбце и 2-х диагоналях равна 15
    Написать не составило труда, но возникла проблемка с оптимизацией, он его заполняет вечность.
    Если убрать заполнение квадрата уникальными числами 1-9 то быстро все заполняет но некоторые цифры повторяются что не правильно для магического квадрата.
    Если не очень сложно помогите оптимизировать.
    <div class="sp-wrap"><div class="sp-head-wrap"><div class="sp-head folded clickable">"Код"</div></div><div class="sp-body"><div class="sp-content">#include<iostream>
    #include<stdlib.h>
    #include<time.h>
    using namespace std;

    int main(){
    srand(time(0));
    const int S=3;
    int mas={0};
    bool unik;
    int x;
    while(mas[0][0]+mas[0][1]+mas[0][2]!=15||
    mas[1][0]+mas[1][1]+mas[1][2]!=15||
    mas[2][0]+mas[2][1]+mas[2][2]!=15||
    mas[0][0]+mas[1][0]+mas[2][0]!=15||
    mas[0][1]+mas[1][1]+mas[2][2]!=15||
    mas[0][2]+mas[1][2]+mas[2][2]!=15||
    mas[0][0]+mas[1][1]+mas[2][2]!=15||
    mas[2][0]+mas[1][1]+mas[0][2]!=15){
    for(int i=0;i<S;i++){
    for(int j=0; j<S; j++){
    mas[j]=rand()%9+1;
    }
    }

    for(int k = 0; k < 9; k++){
    do{
    unik = true;
    x = rand()%9+1;
    for(int i = 0; i <S; i++ ){
    for(int j = 0; j < S; j++){
    if(mas[j] == x)
    {
    unik = false; break;
    }
    }
    }
    }while(!unik);

    mas[k/3][k%3] = x;
    }

    for(int i=0;i<S;i++){
    for(int j=0; j<S; j++){
    cout<<mas[j]<<" ";
    }
    cout<<endl;
    }
    }
     
  2. Whatka

    Whatka Well-Known Member

    Регистрация:
    9 окт 2011
    Сообщения:
    433
    Симпатии:
    4
    У тебя всего 10 неповторяющихся комбинаций из 3 чисел от 1 до 9 с суммой 15
    Т.е. ты можешь получить все такие магические квадараты используя различные расположения этих троек в квадрате
     
Загрузка...
Похожие Темы - Магический Квадрат 3*3
  1. natasha777
    Ответов:
    5
    Просмотров:
    2.186
  2. allexey
    Ответов:
    0
    Просмотров:
    1.579
  3. kisslata
    Ответов:
    7
    Просмотров:
    2.192
  4. Монопо
    Ответов:
    0
    Просмотров:
    2.017
  5. dimon131
    Ответов:
    7
    Просмотров:
    3.090

Поделиться этой страницей