Pagini recente » Cod sursa (job #3158312) | Cod sursa (job #3293477) | Cod sursa (job #3272566) | Cod sursa (job #1316839) | Cod sursa (job #2701070)
#include<fstream>
using namespace std;
ifstream f("flip.in");
ofstream g("flip.out");
int n, m, mat[17][17], x[17], answer;
void calc(){
//in vectorul x am hotarat deja ce linii vor fi inmultite cu -1 asa ca fac calculele pe coloana
int sum = 0;
for(int i = 1;i <= m;i++){
int value = 0;
for(int j = 1;j <= n;j++){
value += (mat[j][i] * x[j]);
}
//in caz de suma negativa pe coloana inmultesc cu -1 suma ca si cand as fi lovit comutatorul de pe coloana
if(value < 0){
value *= -1;
}
sum += value;
}
if(answer < sum){
answer = sum;
}
}
//functie ce va apela functia calc() pentru fiecare combinatie de comutari de linii
void determina(int k){
if(k == n + 1){
calc();
}
else{
x[k] = -1;
determina(k+1);
x[k] = 1;
determina(k+1);
}
}
int main(){
f >> n >> m;
for(int i = 1;i <= n;i++){
for(int j = 1;j <= m;j++){
f >> mat[i][j];
}
}
determina(1);
g << answer;
return 0;
}