Pagini recente » Cod sursa (job #2241415) | Cod sursa (job #47013) | Cod sursa (job #2644502) | Cod sursa (job #1545415) | Cod sursa (job #1013873)
#include <fstream>
using namespace std;
struct Tabla{
int n;
int m;
int a[16][16];
};
int rand[16];
int sumaMaxima;
void citireDate(Tabla &tabla){
ifstream fin("flip.in");
fin>>tabla.n>>tabla.m;
for(int i = 0; i < tabla.n;i++){
for(int j = 0;j < tabla.m;j++){
fin>>tabla.a[i][j];
}
}
fin.close();
}
void scriereDate(){
ofstream fout("flip.out");
fout<<sumaMaxima;
fout.close();
}
void prelSol(Tabla &tabla){
int suma = 0;
int sumaRand;
for(int i = 0;i < tabla.n;i++){
sumaRand = 0;
for(int j = 0;j < tabla.m;j++){
sumaRand += rand[j] * tabla.a[i][j];
}
if(sumaRand > -1*sumaRand){
suma += sumaRand;
}else{
suma -= sumaRand;
}
}
if(suma > sumaMaxima){
sumaMaxima = suma;
}
}
void backRanduri(int k, int &n, Tabla &tabla){
if(k == n){
prelSol(tabla);
}else{
for(int i = -1;i <= 1;i+=2){
rand[k] = i;
backRanduri(k+1, n, tabla);
}
}
}
int main(int argc, char *argv[]){
Tabla tabla;
citireDate(tabla);
backRanduri(0, tabla.n, tabla);
scriereDate();
return 0;
}