Obsah fóra
PravidláRegistrovaťPrihlásenie




Odpovedať na tému [ 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
Príspevok NapísalOffline : 09.12.2009 21:38

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
Príspevok Napísal autor témyOffline : 13.12.2009 21:59

dik za pomoct uz som to viriesil...


Odpovedať na tému [ Príspevkov: 2 ] 


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

1095

13.11.2016 23:34

mraudur Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. označenie vodičov na toroide

v Elektronika

4

811

19.04.2010 16:03

xerox422 Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. ako odstranit trojskeho kona z disku

v Antivíry a antispywary

7

7906

13.08.2008 15:34

majky358 Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Mal som virus trojskeho kona a nejak sa nedal odtranit...

v Antivíry a antispywary

12

1144

17.07.2007 13:21

Break Zobrazenie posledných príspevkov

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

v Grafické programy

3

793

09.01.2008 12:03

Lepo Zobrazenie posledných príspevkov

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

v JavaScript, VBScript, Ajax

4

481

23.09.2010 23:02

KViki Zobrazenie posledných príspevkov

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

v JavaScript, VBScript, Ajax

4

762

12.01.2011 18:54

TommyHot Zobrazenie posledných príspevkov

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

v Grafické programy

10

1480

01.08.2008 20:27

dulius Zobrazenie posledných príspevkov

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

v Externé zariadenia

3

420

03.06.2012 15:42

noji Zobrazenie posledných príspevkov

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

v JavaScript, VBScript, Ajax

2

766

27.12.2007 0:01

audiotrack Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. C - pohyb po stlaceni klavesy

v Assembler, C, C++, Pascal, Java

6

555

17.04.2011 14:03

hradecek Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. News.js - pohyb.novinky (help)

v JavaScript, VBScript, Ajax

4

2506

08.04.2008 0:34

mylan Zobrazenie posledných príspevkov

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

v JavaScript, VBScript, Ajax

1

470

07.11.2009 15:04

chrono Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Program na real time pohyb figur

v Ostatné programy

4

364

11.04.2012 11:48

reklamiak Zobrazenie posledných príspevkov

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

424

23.11.2007 11:26

mimkork Zobrazenie posledných príspevkov

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

1177

04.04.2010 17:50

Sano90 Zobrazenie posledných príspevkov


Nemôžete zakladať nové témy v tomto fóre
Nemôžete odpovedať na témy v tomto fóre
Nemôžete upravovať svoje príspevky v tomto fóre
Nemôžete mazať svoje príspevky v tomto fóre

Skočiť na:  

Powered by phpBB Jarvis © 2005 - 2024 PCforum, webhosting by WebSupport, secured by GeoTrust, edited by JanoF
Ako väčšina webových stránok aj my používame cookies. Zotrvaním na webovej stránke súhlasíte, že ich môžeme používať.
Všeobecné podmienky, spracovanie osobných údajov a pravidlá fóra