Se da un punct din interiorul unui obiect (intr-o matrice 0-1). Sa se
determine numarul de valori 0 situate in imediata vecinatate a
frontierei obiectului.
#include<iostream>Fisier
#include<fstream>
using namespace std;
int a[100][100],viz[100][100],n,xx,yy,nr;
void citire()
{int i,j;
ifstream f("date");
f>>n;
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
f>>a[i][j];
f>>xx>>yy;
}
void fill(int x, int y)
{
if(x>=1 && x<=n && y>=1 && y<=n)
if(a[x][y]==1 && viz[x][y]==0)
{viz[x][y]=1;
fill(x,y+1);
fill(x,y-1);
fill(x-1,y);
fill(x+1,y);}
else if(x>=1 && x<=n && y>=1 && y<=n && a[x][y]==0)
{ if(viz[x][y]==0)
nr++;
viz[x][y]=2;}
}
int main()
{citire();
fill(xx,yy);
cout<<nr;
}
5Se da o fotografie color (reprezentata printr-o matrice nxm). Culorile sunt numere intregi intre 0 si 9. Sa se verifice daca exista o culoare majoritara. (care sa acopere mai mult de jumatate din suprafata matricii.)
0 1 1 0 0
0 0 0 0 1
1 1 0 0 0
0 0 0 0 1
1 1 1 0 0
3 1
#include<iostream>Fisier
#include<fstream>
using namespace std;
int a[100][100],n,m;
void citire()
{int i,j;
ifstream f("date");
f>>n>>m;
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
f>>a[i][j];
}
int main()
{
int v[100]={0},i,j,p,k;
citire();
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
{p=a[i][j];
v[p]++;}
for(k=0;k<=9;k++)
if(v[k]>=n*m/2)
{cout<<k<<" "<<v[k]<<endl;break;}
cout<<"Culoarea majoritara "<<k<<" apare de "<<v[k]<<" ori";
}
5 5In conditiile problemei 6, sa se verifice daca exista un obiect care sa acopere mai mult de jumatate din matrice.
1 1 1 2 1
2 2 1 1 1
4 5 5 5 1
4 2 5 6 7
1 1 1 1 1
#include<iostream>Fisier
#include<fstream>
using namespace std;
int a[100][100],n,m,nr;
void citire()
{int i,j;
ifstream f("date");
f>>n>>m;
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
f>>a[i][j];
}
void fill(int x,int y,int k)
{
if(x>=1 && x<=n && y>=1 && y<=m)
if(a[x][y]==k)
{a[x][y]=(-1)*k;
nr++;
fill(x,y+1,k);
fill(x,y-1,k);
fill(x-1,y,k);
fill(x+1,y,k);}
}
int main()
{int i,j,k;
citire();
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
{k=a[i][j];
nr=0;
fill(i,j,k);
if(nr>=n*m/2)
{cout<<k<<" "<<nr;return 0;}
}
}
5 5
1 1 1 1 1
2 2 2 2 2
4 2 2 2 2
4 2 2 2 2
1 1 1 1 1