Nume Problema :
Soarece
Sursa
:www.pbinfo.ro
Nume
elev:Constantin
Radu Petrisor
Petrisor
28 May 2014
Clasa: XI B
Table of
Contents
Enuntul Problemei:..............................................................2
Descrierea metodei de rezolvare a problemei:....................3
Toate variabilele globale sunt de tip intreg (int):...............3
Descrierea functiilor folosite............................................4
Descrierea algoritmului folosit.........................................4
Elemente de eficienta:.....................................................5
ALGORITMUL.......................................................................6
Seturi de date de intrare-iesire................................7
Enuntul Problemei:
Cerina
Se d o tabl dreptunghiular format din n linii i m coloane,
definind n*m zone, unele dintre ele fiind libere, altele coninnd obstacole.
n zona aflat la poziia is, js se afl un oarece care se poate deplasa pe
tabl trecnd din zona curent n zona nvecinat cu aceasta pe linie sau pe
coloan. Scopul sau este s ajung la o bucat de brnz aflat n zona de
la poziia ib, jb, fr a prsi tabla, fr a trece prin zone care conin
obstacole i fr a trece de dou ori prin aceeai zon.
Determinai cte modaliti prin care oarecele poate ajunge de la pozi ia
iniial la cea a bucii de brnz exist
Date de intrare
Fiierul de intrare soarece.in conine pe prima linie numerele n m,
separate printr-un spaiu. Urmtoarele n linii conin cte m valori 0 sau1,
separate prin exact un spaiu, care descriu tabla valoarea 0 reprezint o
zon liber, valoarea 1 reprezint o zon ocupat cu un obstacol. Pe
linia n+2 se afl 4 numere separate prin exact un spaiu, reprezentnd is
js ib jb.
Date de ieire
Fiierul de ieire soarece.out va conine pe prima linie numrul S,
reprezentnd numrul de modaliti prin care oarecele poate ajunge de la
poziia iniial la cea a bucii de brnz.
Restricii i precizri
1 n,m 10
1 is,ib n, 1 js,jb m
ALGORITMUL
1. #include <iostream>
2. #include<fstream>
3. using namespace std;
4. ifstream fin("soarece.in");
5. ofstream fout("soarece.out");
6. int a[14][14],is,js,ib,jb,n,m,nr;
7. void citire()
8. {
9.
fin>>n>>m;
10.
for(int i=1;i<=n;i++)
11.
12.
for(int j=1;j<=m;j++)
13.
14.
fin>>a[i][j];
15.
16.
17.
fin>>is>>js>>ib>>jb;
18.
for(int i=0;i<=m+1;i++)
19.
20.
a[0][i]=-1;
21.
a[n+1][i]=-1;
22.
23.
for(int i=0;i<=n+1;i++)
24.
25.
a[i][0]=-1;
26.
a[i][m+1]=-1;
27.
28.
29. }
30. void branzaebuna(int x,int y)
31. {if(a[x][y]==0)
32.
33.
a[x][y]=2;
34.
35.
36.
nr++;
else
37.
{branzaebuna(x-1,y);
38.
branzaebuna(x,y+1);
39.
branzaebuna(x+1,y);
40.
branzaebuna(x,y-1);
41.
42.
a[x][y]=0;
43.
44. }
45. int main()
46. {
47. }
citire();
branzaebuna(is,js); fout<<nr;
return 0;
0
1
1
1
1
0
0
0
1
0
0
0
0
0
0
0
1
0
iesire :
intrare
0
1
1
1
1
0
1
0
1
0
0
0
0
0
0
0
1
0
iesire :
3
intrare:
0
0
0
0
1
iesire:
Bibliografie:
1.www.pbinfo.ro
2.Metode de programare,Grafuri si POO,editura Else(culegere clasa)