[ Príspevkov: 2 ] 
AutorSpráva
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 01.12.07
Prihlásený: 31.08.11
Príspevky: 49
Témy: 11 | 11
NapísalOffline : 09.12.2009 21:38 | Pohyb kona po Toroide

Zdrawim potreboval by som pomoct s upravenim zdrojového kódu:(Zdrojovy kod je implementovany v jazyku c++):

Je dána sachovnica o rozmeroch n x n.
Na sachovnici umiestníme do lubovolnj pozicie šachového kona, jazdce, ktorý sa pohybuje podla známých sachových pravidiel.
Úloha spocívá v tom, ze máme najst cestu kona po sachovnici tak, ze kazdé polícko navstíví iba raz tj. žiadné pole sa neopakuje a ziadné pole nieje vynechane.



Kód:
#include <stdio.h>

//najmensia sachovnice musi byt 5

//najvetsia sachovnica musi byt 8

//velkost sachovnice

const int BoardSize = 8;



//deklaracia typu sachovnice

typedef int tBoard[BoardSize][BoardSize];



//pocet moznych tahov

const int NoOfHorseMoves = 8;



//zmeny suradnic pre jednotlive tahy

const int RowMoveDelta[NoOfHorseMoves] = {-2, -1, +1, +2, +2, +1, -1, -2};

const int ColMoveDelta[NoOfHorseMoves] = {+1, +2, +2, +1, -1, -2, -2, -1};



//deklaracia typu pre ulozenie pozicie

struct Position

{

      int Row;

      int Col;

};



//inicializacia sachovnice

void InitBoard(tBoard& Board)

{

      for(int i = 0; i < BoardSize; i++)

            for(int j = 0; j < BoardSize; j++)

                  Board[i][j] = 0;

}



//zobrazenie sachovnice

void PrintBoard(const tBoard& Board)

{

      for(int i = 0; i < BoardSize; i++)

      {

            for(int j = 0; j < BoardSize; j++)

                  printf("%4i", Board[i][j]);

            printf("\n");

      }

      printf("\n");

}



//posun kona po sachovnici

Position Move(const Position& Pos, const int MoveIndex)

{

      Position p;

      p.Row = Pos.Row + RowMoveDelta[MoveIndex];

      p.Col = Pos.Col + ColMoveDelta[MoveIndex];

      return p;

}



//test ci je tah platny

//vracia true pokial je tah na pozicii Pos na sachovnici dane parametrom Board mozny

bool IsValidMove(const Position& Pos, const tBoard Board)

{

      bool Result = true;

      Result &= 0 <= Pos.Row;

      Result &= Pos.Row < BoardSize;

      Result &= 0 <= Pos.Col;

      Result &= Pos.Col < BoardSize;

      Result &= Board[Pos.Row][Pos.Col] == 0;

      return Result;

}



//rekurzivne hledanie riesenie problemu metoda backtracking

// Parametre:

// Board -- aktualna sachovnica, 0 znamena volne policko, cislo rozne od 0 znamena poradie tahu ktorym sa sem kon dostal

// CurrentPos -- aktualna poloha kona

// MoveNumber -- poradie tahu, ktory prevadzame

// Funkcia vracia true , pokial bolo najdene riesenie

bool Horse(tBoard& Board, const Position& CurrentPos,

        const int MoveNumber)

{

      if (MoveNumber == BoardSize*BoardSize)

            return true;



      for(int i = 0; i < NoOfHorseMoves; i++)

      {

            Position p = Move(CurrentPos, i);

            if (IsValidMove(p, Board))

            {

                  Board[p.Row][p.Col] = MoveNumber;

                  if (Horse(Board, p, MoveNumber+1))

                        return true;

                  else

                        Board[p.Row][p.Col] = 0;

            }

      }

      return false;

}





void main()

{

      tBoard Board;

      Position InitPos = {0,0};



      InitBoard(Board);

      bool HasSolution = Horse(Board, InitPos, 1);

      if (HasSolution)

      {

            PrintBoard(Board);

      }

      else

      {

            printf("Riesenie nenajdene!\n");

      }

}



Tento kód funguje pre normalný typ sachovnice ale ked zmenim typ sachovnice na tvar toroidu? tak to nefunguje a cel by som to pomoct upravit aby to fungovalo na sachovnici tvaru n x n a tvaru toroidu...

Vazne by som vám bol vdačný za pomoc poprípade by som bol ochotný za neakú finančnú odmenu.


Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 01.12.07
Prihlásený: 31.08.11
Príspevky: 49
Témy: 11 | 11
Napísal autor témyOffline : 13.12.2009 21:59 | Pohyb kona po Toroide

dik za pomoct uz som to viriesil...


 [ Príspevkov: 2 ] 


Pohyb kona po Toroide



Podobné témy

 Témy  Odpovede  Zobrazenia  Posledný príspevok 
V tomto fóre nie sú ďalšie neprečítané témy.

0 na Toroide

v Elektronika

17

1255

13.11.2016 23:34

mraudur

V tomto fóre nie sú ďalšie neprečítané témy.

označenie vodičov na toroide

v Elektronika

4

927

19.04.2010 16:03

xerox422

V tomto fóre nie sú ďalšie neprečítané témy.

ako odstranit trojskeho kona z disku

v Antivírusy a ochrana

7

8014

13.08.2008 15:34

majky358

V tomto fóre nie sú ďalšie neprečítané témy.

Mal som virus trojskeho kona a nejak sa nedal odtranit...

v Antivírusy a ochrana

12

1265

17.07.2007 13:21

Break

V tomto fóre nie sú ďalšie neprečítané témy.

pohyb

v Grafické programy

3

895

09.01.2008 12:03

Lepo

V tomto fóre nie sú ďalšie neprečítané témy.

Pohyb za kurzorom

v Frontend

4

577

23.09.2010 23:02

KViki

V tomto fóre nie sú ďalšie neprečítané témy.

jQuery pohyb obrazku

v Frontend

4

866

12.01.2011 18:54

TommyHot

V tomto fóre nie sú ďalšie neprečítané témy.

Program na pohyb obrazkov

v Grafické programy

10

1584

01.08.2008 20:27

dulius

V tomto fóre nie sú ďalšie neprečítané témy.

vysoke DPI oneskoreny pohyb

v Externé zariadenia

3

506

03.06.2012 15:42

noji

V tomto fóre nie sú ďalšie neprečítané témy.

skript na pohyb obrazkov

v Frontend

2

853

27.12.2007 0:01

audiotrack

V tomto fóre nie sú ďalšie neprečítané témy.

Ako sa zisti pohyb kolieska.

v Frontend

1

550

07.11.2009 15:04

chrono

V tomto fóre nie sú ďalšie neprečítané témy.

C - pohyb po stlaceni klavesy

v Backend

6

653

17.04.2011 14:03

hradecek

V tomto fóre nie sú ďalšie neprečítané témy.

News.js - pohyb.novinky (help)

v Frontend

4

2606

08.04.2008 0:34

mylan

V tomto fóre nie sú ďalšie neprečítané témy.

Program na real time pohyb figur

v Ostatné programy

4

435

11.04.2012 11:48

reklamiak

V tomto fóre nie sú ďalšie neprečítané témy.

Pohyb v hre Second Life budú hráči kontrolovať myšlienk

v Novinky

1

496

23.11.2007 11:26

mimkork

V tomto fóre nie sú ďalšie neprečítané témy.

Problem s mysou vo Windows Vista (samovolny pohyb mysi)

v Externé zariadenia

2

1268

04.04.2010 17:50

Sano90



© 2005 - 2026 PCforum, edited by JanoF