Pagini recente » Borderou de evaluare (job #2021085) | Borderou de evaluare (job #1567170) | Clasament simulare-cartita-39 | Borderou de evaluare (job #1505087) | Cod sursa (job #1027194)
#include<stdio.h>
int Viz[15], Viz2[15], n, m, a[20][20], r, c, Max;
inline int suma(){
int Sum = 0;
for(int i = 1; i <= n; ++ i)
if(Viz[i] == 0)
for(int j = 1; j <= m; ++ j)
if(Viz2[j] == 0)
Sum += a[i][j];
return Sum;
}
void backC(int k, int next){
if(k == c + 1){
int Sum = suma();
if(Sum > Max)
Max = Sum;
}
for(int i = next; i <= m; ++ i)
if(Viz2[i] == 0){
Viz2[i] = 1;
backC(k + 1, i + 1);
Viz2[i] = 0;
}
}
void backL(int k, int next){
if(k == r + 1)
backC(1, 1);
for(int i = next; i <= n; ++ i)
if(Viz[i] == 0){
Viz[i] = 1;
backL(k + 1, i + 1);
Viz[i] = 0;
}
}
int main(){
freopen("elimin.in", "r", stdin);
freopen("elimin.out", "w", stdout);
scanf("%d %d %d %d", &n, &m, &r, &c);
for(int i = 1; i <= n; ++ i)
for(int j = 1; j <= m; ++ j)
scanf("%d", &a[i][j]);
backL(1, 1);
printf("%d", Max);
}