Rezolvare completă PbInfo #317 SumMax

Cerinţa

Se dă o matrice pătratică cu n lini şi n coloane şi elemente numere naturale distincte. Determinaţi cea mai mare sumă a n elemente din matrice, cu proprietatea că oricare două elemente se află pe linii şi coloane distincte.

Date de intrare

Fişierul de intrare summax.in conţine pe prima linie numărul n, iar pe următoarele n linii câte n numere naturale, separate prin spaţii, reprezentând elementele matricei.

Date de ieşire

Fişierul de ieşire summax.out va conţine pe prima linie numărul S, reprezentând suma maximă determinată.

Restricţii şi precizări

  • 1 ≤ n ≤ 10
  • elementele matricei vor avea cel mult 4 cifre

Exemplu

summax.in

4
12 16 5 4
11 14 6 7
8 2 3 17
10 9 13 15

summax.out

57

Explicație

57=16+11+17+13.

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

#include <fstream>
#include <iostream>
using namespace std;

int x[11], uz[11], a[11][11] ,n , smax;

ifstream fin("summax.in");
ofstream fout("summax.out");

void back(int k){
    for(int i=1 ; i<=n ; ++i)
    if(uz[i]==0)
    {
        uz[i]=1;
        x[k]=i;
        if(k==n){
            int s = 0;
            for( int j=1;j<=n;j++)
                s += a[j][x[j]];
            if(s>smax){
                smax = s;
            }
        }
        else
            back(k+1);
        uz[i]=0;
    }
}
int main(){

    fin>>n;
    for(int i=1;i<=n;++i)
        for(int j=1;j<=n;++j)
            fin >> a[i][j];
    back(1);
    fout << smax;
    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 #317 SumMax

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