Pagini recente » Cod sursa (job #1487391) | Cod sursa (job #2295404) | Cod sursa (job #197234) | Cod sursa (job #2315211) | Cod sursa (job #2197436)
#include <iostream>
#include <fstream>
using namespace std;
ifstream in("elimin.in");
ofstream out("elimin.out");
int n, m, r, c;// se da o matrice de n pe m si trebuie sa elimin exact r linii si c coloane
int matr[101][101];//matricea contine numere naturale
int linie[101],coloana[101];
int operatieColoana[101];
int sumMax, nrLinTot;
void citire(){
in >> n >> m >> r >> c;
for(int i = 1; i <= n; i++){
for(int j = 1; j <= m; j++){
in >> matr[i][j];
}
}
}
void initializareOperatii(){
for(int j = 1; j <= m; j++){
operatieColoana[j] = 1;
}
}
void bktColoane(int varf){
for(int i = coloana[varf - 1] + 1; i <= m; i++){
coloana[varf] = i;
operatieColoana[i] = 0;
if(varf <= c){
if(varf == c){
int sumTemp = 0;
for(int lin = linie[1]; lin <= nrLinTot; lin++){
for(int col = 1; col <= m; col++){
sumTemp = sumTemp + matr[lin][col] * operatieColoana[col];
}
}
if(sumTemp > sumMax){
sumMax = sumTemp;
}
}else{
bktColoane(varf + 1);
}
}
operatieColoana[i] = 1;
}
}
void bktLinii(int varf){
for(int i = linie[varf - 1] + 1; i <= n; i++){
linie[varf] = i;
if(varf <= nrLinTot){
if(varf == nrLinTot){
bktColoane(1);
}else{
bktLinii(varf + 1);
}
}
}
}
int main() {
citire();
nrLinTot = n - r;
initializareOperatii();
bktLinii(1);
out << sumMax;
return 0;
}