Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // stat.cpp : Defines the entry point for the console application.
- //
- #include "stdafx.h"
- //BACKTRACKING
- //zdef stale N i M
- #define sizeX 9
- #define sizeY 10
- #define DEPTH_MIN 10 //gl zanurzenia okretu xD
- //zdefiniowac typ wyliczeniowy kierunki ruchu UP RIGHT DOWN LEFT
- typedef enum { RIGHT = 2, UP = 1, DOWN = 3, LEFT = 4 }Direction;
- int move(int** pTab, int row, int col, int nDepth, int move_nr, int x, int y, int* px, int* py, int** root);
- //ptab glebokosc kazdego kwadratu
- //rozmiary tablicy x2
- //min glebokosc DEPTH_MIN
- //kierunek ruchu
- // aktualne polozenie x2
- //parametry wyjsciowe wyliczone na podstawie x y i move x2
- //tablica w ktorej pamietamy ruchu ( ? )
- //ruch w kierunku move_nr (switch) px py
- //sprawdzic czy px py sa w zakresie tablicy
- //sprawdzic warunek cyz nie jest za plytko min metr pod statkiem
- //czy nie bylo sie w tej lokalizacji
- //jesli wsszytsko ok ? 1 : 0
- int root(int** pTab, int row, int col, int depth, int x, int y, int** pRoot, int x_dest, int y_dest) {
- if (x == x_dest && y == y_dest)
- return 1;
- int newX = 0;
- int newY = 0;
- for (int i = 1; i <= 4; i++) {
- if (move(pTab, row, col, depth, i, x, y, &newX, &newY, pRoot)) {
- pRoot[newX][newY] = 1;
- root(pTab, row, col, depth, newX, newY, pRoot, x_dest, y_dest);
- return 1;
- }
- }
- }
- //ptab tablic z glebokosciami
- //proot tablica kolejnych ruchow
- //wsp docelowe (dest)
- //tab root pamieta droge 1 odwiedzono 0 nie
- //jezeli dotarlem do portu zwracam 1
- //zdefiniowac nowe wsp
- //spr wszystkie mozliwe ruchy
- //jesli ruch jest mozliwy w zadanym kierunku
- //jesli wykonanie kolejnego ruchu sie powiodlo to rekurencyjnie od nowego miejsca
- //return 1
- //jesli wrcamay to ustawiamy proot ze ruch byl zly
- //return 0
- //calloc
- void setTab(char* sFile, int** pTab, int row, int col);
- //dane z pliku (tak ja w matrixie)
- //sfile nazwa pliku
- //ptab tablica z glebokosciami
- //wymiary tablicy
- //main
- //sprawdzic argc
- //wykreowac dynamicznie 2 tablice 2d 10x10?
- //wyzerowac obie tablice (calloc)
- //wczytac dane (sprawdzic argc)
- //jezeli nie znaleziono drogi od 00 do portu wypisac ze sie nie do czy cos ( ? )
- //jesli ok to wypisac trase i zwolnic pamiec
- // i tyle
- int main()
- {
- return 0;
- }
- int move(int** pTab, int row, int col, int nDepth, int move_nr, int x, int y, int* px, int* py, int** root) {
- switch (move_nr) {
- case UP: *py = --y;
- break;
- case RIGHT: *px = ++x;
- break;
- case DOWN: *py = ++y;
- break;
- case LEFT: *px = --x;
- }
- if (*px >= 0 && *px < col && *py >= 0 && *py < row)
- if (pTab[*px][*py] > nDepth)
- if (root[*px][*py] == 0)
- return 1;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement