Rezolvare completă PbInfo #3245 pion1

Cerința

O tablă de șah se reprezintă ca o matrice cu n linii și n coloane în care pozițiile libere au valoarea 0, iar pozițiile ocupate de piese sunt marcate prin valoarea 1.

Să se determine numărul maxim de piese pe care le poate lua un pion care pleacă de pe prima linie a tablei și vrea să ajungă pe ultima linie. Pionul poate porni din orice poziție de pe prima linie. Pe prima linie nu se află alte piese.

Pionul aflat în pozitia i,j se poate deplasa astfel:

  • în poziția i+1, j dacă este liberă
  • în poziția i+1, j-1 dacă este o piesă în această poziție
  • în poziția i+1, j+1 dacă este o piesă în această poziție

Date de intrare

Programul citește de la tastatură numărul n, reprezentând dimensiunea tablei, iar apoi n*n numere 0 sau 1 cu semnificația din enunț.

Date de ieșire

Programul va afișa pe ecran numărul x, reprezentând numărul maxim de piese pe care le poate lua pionul.

Restricții și precizări

  • 1 ≤ n ≤ 100

Exemplu

Intrare

5
0 0 0 0 0
0 1 0 1 0
0 1 1 1 1
0 0 0 1 1
0 1 0 1 1

Ieșire

4

Explicație

Pionul poate lua maximum 4 piese, pe traseul (1,1) (2,2) (3,3) (4,4) (5,5). Acest traseu nu este unicul pe care pionul poate lua 4 piese.

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 pion1:

#include <iostream>
using namespace std;

int n,A[101][101],C[101][101],x;

int main()
{
    cin>>n;
    for(int i=1;i<=n;i++)
        for(int j=1;j<=n;j++)
            cin>>A[i][j];
    for(int i=2;i<=n;i++)
        for(int j=1;j<=n;j++)
            if(A[i][j]==0) C[i][j]=C[i-1][j];
            else if(C[i-1][j-1]>C[i-1][j+1]) C[i][j]=C[i-1][j-1]+1;
                 else C[i][j]=C[i-1][j+1]+1;
    for(int j=1;j<=n;j++)
        if(C[n][j]>x)
            x=C[n][j];
    cout<<x;
    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 Adresa de email.

Rezolvarea problemei #3245 pion1

Pe această pagină găsești rezolvarea de 100 de puncte pentru problema #3245 pion1 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!