Chirurgia cranio-cerebrală minim invazivă
Tehnicile minim invazive impun utilizarea unei tehnologii ultramoderne. Endoscoapele operatorii de diverse tipuri, microscopul operator dedicat, neuronavigația, neuroelectrofiziologia, tehnicile avansate de anestezie, chirurgia cu pacientul treaz reprezintă armamentarium fără de care neurochirurgia prin "gaura cheii" nu ar fi posibilă. Folosind tehnicile de mai sus, tratăm un spectru larg de patologii cranio-cerebrale. www.neurohope.ro |
Drumul minim de la plecare la ieșire
Last Updated: Oct 31 2016 22:34, Started by
Alexiuri
, Oct 25 2016 17:17
·
0
#1
Posted 25 October 2016 - 17:17
Problema este aceasta :
Quote
Scrieți o funcție care primește un labirint sub forma unei matrici, poziția celulei de plecare și poziția celulei de iesire și returnează lungimea drumului minim de la plecare la ieșire. Fiecare celulă din matrice va avea va avea valoare 1 (perete) sau 0 (drum). [0,0] [0,0] punct de start (0,1) si punct de finish (1,0) un drum de lungime minima este (0,1) -> (0,0) -> (1,0) si functia va returna 2. unsigned int minRouteLength(maze magicMaze); Nu am voie sa folosesc alte biblioteci... Incerc sa rezolv cu algoritmul lui Lee... dar imi da eroare si nu inteleg de ce . struct smaze { char maze[MAX_ARRAY_LENGTH_LONG][MAX_ARRAY_LENGTH_LONG]; unsigned int noOfRows; int noOfColumns; unsigned int rowOfDeparture; unsigned int columnOfDeparture; unsigned int rowOfExit; unsigned int columnOfExit; }; struct coada { int xi; int xj; coada *next; }; void add(coada* &v,coada* &sf,int i,int j) { coada *c; if(!v) { v=new coada; v->xi=i; v->xj=j; v->next=0; sf=v; } else { c=new coada; sf->next=c; c->xi=i; c->xj=j; sf=c; sf->next=0; } } void pop(coada* &v) { coada* c; if(v) { c=v; v=v->next; delete c; } } bool ok(int i,int j,int n,int m,int var) { if(i<0 || i>=n || j<0 || j>=m || var==-1)return 0; return 1; } unsigned int minRouteLength(smaze magicMaze) { int i,j,i_next,j_next; int di[]={0,1,-1,0}; int dj[]={1,0,0,-1}; int matrice[1000][1000]; for(i=0;i<magicMaze.noOfRows;i++) for(j=0;j<magicMaze.noOfColumns;j++) if(magicMaze.maze[i][j]=='1')matrice[i][j]=-1; else matrice[i][j]=0; matrice[magicMaze.rowOfDeparture][magicMaze.columnOfDeparture]=1; coada *leei=0,*leef=0; add(leei,leef,magicMaze.rowOfDeparture,magicMaze.columnOfDeparture); while(leei!=0) { i=leei->xi; j=leei->xj; pop(leei); for(int directie=0;directie<4;directie++) { i_next=i+di[directie]; j_next=j+di[directie]; if(ok(i_next,j_next,magicMaze.noOfRows,magicMaze.noOfColumns,matrice[i_next][j_next])&&matrice[i_next][j_next]<1) { matrice[i_next][j_next]=matrice[i][j]+1; add(leei,leef,i_next,j_next); } } } return matrice[magicMaze.rowOfExit][magicMaze.columnOfExit]; } int main() { int i,j; smaze magicMaze; ifstream f("date.in"); f>>i>>j; magicMaze.noOfColumns=j; magicMaze.noOfRows=i; f>>i>>j; magicMaze.rowOfDeparture=i; magicMaze.columnOfDeparture=j; f>>i>>j; magicMaze.rowOfExit=i; magicMaze.columnOfExit=j; for(i=0;i<magicMaze.noOfRows;i++) for(j=0;j<magicMaze.noOfColumns;j++) f>>magicMaze.maze[i][j]; minRouteLength(magicMaze); return 0; }Avand in date.in : Quote
4 4 0 0 3 3 0000 0000 0000 0000
Edited by dani.user, 25 October 2016 - 17:28.
|
#2
Posted 31 October 2016 - 22:34
i_next=i+di[directie]; j_next=j+di[directie]; La compilare iti apare un warning: unused variable 'dj'. Nu ignora warning-urile . |
Anunturi
▶ 0 user(s) are reading this topic
0 members, 0 guests, 0 anonymous users