Pagini recente » Cod sursa (job #2817444) | Cod sursa (job #1786550) | Cod sursa (job #877615) | Cod sursa (job #2902795) | Cod sursa (job #1013290)
#include <fstream>
using namespace std;
struct Tabla{
int n;
int m;
int a[16][16];
};
int l[16];
int c[16];
int sumaMaxima;
void readData(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();
}
//coloane
void prelSolColoane(Tabla &tabla){
int suma = 0;
int semn;
for(int i = 0;i < tabla.n;i++){
for(int j = 0;j < tabla.m;j++){
semn = l[i] * c[j];
suma += tabla.a[i][j] * semn;
}
}
if(suma > sumaMaxima){
sumaMaxima = suma;
}
}
void backColoane(int k, int &n, Tabla &tabla){
if(k == n){
prelSolColoane(tabla);
}else{
for(int i = -1;i <= 1;i+=2){
c[k] = i;
backColoane(k+1, n, tabla);
}
}
}
//linii
void prelSolLinii(Tabla &tabla){
backColoane(0, tabla.m, tabla);
}
void backLinii(int k, int &n, Tabla &tabla){
if(k == n){
prelSolLinii(tabla);
}else{
for(int i = -1;i <= 1;i+=2){
l[k] = i;
backLinii(k+1, n, tabla);
}
}
}
int main(){
Tabla tabla;
readData(tabla);
backLinii(0, tabla.n, tabla);
ofstream fout("flip.out");
fout<<sumaMaxima;
fout.close();
return 0;
}