Cerința
Se dă o matrice cu n
linii și m
coloane și elemente 0
sau 1
, care reprezintă harta unui lac, în care 1
înseamnă uscat, iar 0
înseamnă apă.
Să se plaseze pe fiecare zonă cu uscat un crocodil sau un elefant astfel încât să nu fie două animale din aceeași specie în zone învecinate.
Date de intrare
Fișierul de intrare croco.in
conține pe prima linie numerele n m
. Următoarele n
linii conțin câte m
elemente, 0
sau 1
, cu semnificația din enunț.
Date de ieșire
Fișierul de ieșire croco.out
va conține n
linii, fiecare cu câte m
caractere din mulțimea {A, C, E}
, separate prin câte un spațiu, după cum în zona corespunzătoare a lacului este apa
, crocodil
sau elefant
.
Restricții și precizări
1 ≤ n , m ≤ 100
- se acceptă orice soluție corectă
Exemplu
croco.in
3 5 1 1 1 0 1 1 1 0 1 1 0 1 1 0 1
croco.out
C E C A C E C A C E A E C A C
Cum e corect?
cout < "As la info";
cout << "As la info";
cout >> "As la info";
Felicitări! Poți mai mult?
Avem sute de probleme pentru tine, fiecare cu explicații ușor de înțeles.
Greșit, dar nu-i bai!
Antrenează-te cu sutele de probleme pe care ți le-am pregătit. Îți explicăm fiecare problemă în parte.
Rezolvare
Iată rezolvarea de 100 de puncte pentru problema Croco:
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("croco.in");
ofstream fout("croco.out");
int n,m, a[102][102];
const int dx[]={0 , 0 , 1 , -1}, dy[]={1 , -1 , 0 , 0};
void fill(int i , int j , int v)
{
a[i][j] = v;
for(int k = 0 ; k < 4 ; k ++)
if(a[i+dx[k]][j+dy[k]] == 1)
{
if(v == 2)
fill(i+dx[k] , j+dy[k] , 3);
else
fill(i+dx[k] , j+dy[k] , 2);
}
}
int main(){
fin >> n >> m;
for(int i = 1 ; i <= n ; i ++)
for(int j = 1 ; j <= m ; j ++)
fin >> a[i][j];
fin.close();
//bordare , chiar daca este inutila pentru aceasta problema
for(int i = 0 ; i <= n + 1 ; i ++)
a[i][0] = a[i][m+1] = 0;
for(int j = 0 ; j <= m + 1; j ++)
a[0][j] = a[n+1][j] = 0;
for(int i = 1 ; i <= n ; i ++)
for(int j = 1 ; j <= m ; j ++)
if(a[i][j] == 1)
fill(i , j , 2);
for(int i = 1 ; i <= n ; i ++)
{
for(int j = 1 ; j <= m ; j ++)
switch (a[i][j])
{
case 0: fout << "A "; break;
case 2: fout << "C "; break;
case 3: fout << "E "; break;
}
fout << endl;
}
fout.close();
return 0;
}
Atenție
Enunțurile afișate pe această pagină aparțin exclusiv site-ului PbInfo. Astfel, pentru ștergerea conținutului, puteți să ne contactați la adresa .
Rezolvarea problemei #840 Croco
Pe această pagină găsești rezolvarea de 100 de puncte pentru problema #840 Croco de pe PbInfo.ro. Atenție: nu încurajăm copiatul codului! Totuși, credem cu tărie că analizarea unei soluții corecte este o metodă foarte ușoară de a învăța informatică, astfel că oferim sursele pentru peste 1500 de probleme de pe platforma PbInfo.ro.
Pentru rezolvări PbInfo de la peste 1500 de probleme, vă invităm să intrați pe site-ul nostru!