Neurochirurgie minim invazivă
"Primum non nocere" este ideea ce a deschis drumul medicinei spre minim invaziv. Avansul tehnologic extraordinar din ultimele decenii a permis dezvoltarea tuturor domeniilor medicinei. Microscopul operator, neuronavigația, tehnicile anestezice avansate permit intervenții chirurgicale tot mai precise, tot mai sigure. Neurochirurgia minim invazivă, sau prin "gaura cheii", oferă pacienților posibilitatea de a se opera cu riscuri minime, fie ele neurologice, infecțioase, medicale sau estetice. www.neurohope.ro |
[TEMA] Problema oras1 de pe .campion
Last Updated: Mar 03 2015 06:33, Started by
Redount2k9
, Mar 02 2015 18:23
·
0
#1
Posted 02 March 2015 - 18:23
Salut,
am incercat sa rezolv aceasta problema -> http://campion.edu.r...on=view&id=1360 , folosind pentru subpunctul a) o parcurgere si pentru si c) doua functii ce fac filling. Aveam de ales daca filling-ul sa se faca simultan, folosind 2 matrici sau parcurgand de 2 ori harta initiala si dupa terminarea unui filling sa resetez matricea care continea numarul de cladiri / parcuri. Am ales prima varianta. Sursa mea functioneaza, singura problema este ca nu iau nici un test. Pentru primul, datele de intrare sunt: 20 20 ..........C......... ..........S......... PPPCCCCSCPSCSSCPCPSP ...SCSCSPPSPSPSPSP.. .....CSCSCSSSCCP.... ..CPCSPPCCPCSSSPPCS. ......CPPSCPSPC..... ..........P......... .......PSPSCCS...... ........CPCSS....... .SCSPPPPPPPSPSCSPSPS SSSCPCPSPSPCSCPSPCPC .......CCCPSCP...... ........PCCPS....... ........PPPSP....... .....PSCCPCPPCPP.... ..PCPPCCPCCSSCCPCPS. ..SPSPSCSSSCSSPCCCP. ........PCSPP....... ........CPCSC.......iar cele de iesire: 135 40 14 Ei bine, algoritmul meu afiseaza: 132 40 14 Deci functia Contur() emite 3 zone si nu stiu de ce. Daca observati o greseala sau o omitere, postati va rog o idee. Multumesc! #include <fstream> using namespace std; ifstream fin("oras1.in"); ofstream fout("oras1.out"); #define DIM 201 int n, m; char a[DIM][DIM]; int c[DIM][DIM]; int d[DIM][DIM]; int S[DIM * DIM / 4], Smax = -1; int cnt, ter, ter2; const int di[] = { -1, -1, -1, 0, 1, 1, 1, 0 }; const int dj[] = { -1, 0, 1, 1, 1, 0, -1, -1}; const int dfi[] = { -1, 0, 1, 0 }; const int dfj[] = { 0, 1, 0, -1}; void Read(); int Contur(); void FillC(int i, int j); void FillP(int i, int j); bool Ok(int i, int j); void Solve2(); void Refresh(); bool IsOnContur(int i, int j); int main() { Read(); fout << Contur() << ' '; Solve2(); //fout << sizeof(a) + sizeof(c) + sizeof(d) + sizeof(S); fin.close(); fout.close(); return 0; } void Refresh() { for ( int i = 1; i <= n; ++i ) for ( int j = 1; j <= m; ++j ) c[i][j] = 0; } void Solve2() { for ( int i = 1; i <= n; ++i ) for ( int j = 1; j <= m; ++j ) { if ( a[i][j] == 'C' && !c[i][j] ) { ter++; FillC(i,j); } if ( a[i][j] == 'P' && !d[i][j] ) { ter2++; FillP(i,j); } } fout << ter << ' ' << Smax << '\n'; } void FillC(int i, int j) { if ( !Ok(i,j) || c[i][j] || a[i][j] != 'C' ) return; c[i][j] = ter; for ( int d = 0; d < 4; ++d ) FillC(i + dfi[d], j + dfj[d]); } void FillP(int i, int j) { if ( !Ok(i,j) || d[i][j] || a[i][j] != 'P' ) return; d[i][j] = ter2; S[ter2]++; if ( S[ter2] > Smax ) Smax = S[ter2]; for ( int d = 0; d < 4; ++d ) FillP(i + dfi[d], j + dfj[d]); } bool Ok(int i, int j) { if ( i < 1 or i > n or j < 1 or j > m ) return false; return true; } int Contur() { for ( int i = 1; i <= n; ++i ) for ( int j = 1; j <= m; ++j ) if ( a[i][j] == 'P' or a[i][j] == 'C' or a[i][j] == 'S' ) { if ( IsOnContur(i,j) ) cnt++; } return cnt; } int iv, jv; bool IsOnContur(int i, int j) { if ( !Ok(i,j) ) return false; for ( int d = 0; d < 8; ++d ) { iv = i + di[d]; jv = j + dj[d]; if (Ok(iv,jv) && a[iv][jv] == '.' ) return true; } return false; } void Read() { fin >> n >> m; for ( int i = 1; i <= n; ++i ) for ( int j = 1; j <= m; ++j ) fin >> a[i][j]; } Edited by Redount2k9, 02 March 2015 - 18:28. |
#2
Posted 02 March 2015 - 22:06
Quote a, c, d, n, m, S, cnt, ter, ter2, di, dj, dfi, dfj |
#4
Posted 03 March 2015 - 06:33
OriginalCopy, on 29 aprilie 2010 - 19:58, said:
Toate codurile sursa postate trebuie sa contina exclusiv identificatori (nume de variabile, functii, clase) ce reprezinta rolul entitatii identificate de catre identificator. Ex asa nu:"int n", asa da: "int dimensiune_matrice". Exceptie o constituie variabilele i, j, k atunci cand sunt folosite drept contoare. Deschide un nou topic in care demonstrezi ca poti respecta si aceasta regula (pe langa toate celelalte). Edited by OriginalCopy, 03 March 2015 - 08:34. |
Anunturi
▶ 0 user(s) are reading this topic
0 members, 0 guests, 0 anonymous users