Aspetta facciamo prima una cosa semplice! Cerca solo la massima somma tra due elementi della matrice, senza tenere conto del vincolo sulle righe e sulle colonne che è stato imposto nel problema.
Per fare questo occurre scandire tutti gli elementi delle matrice e per ogni elemento sommarlo con 'tutti' gli altri e vedere quale è il valore massimo che si trova.
(In realtà ogni elemento non andrebbe sommato con 'tutti gli altri' ma solo con quelli che vengono dopo (perche la somma con i precedenti è gia stata calcolata), ma di questo per adesso non ne teniamo conto, ok?)
Ho visto che col C in fondo te la cavi e pure con i doppi cicli, per cui ti scrivo subito un modo per fare questo:
#include <stdio.h>
#define V 3
#define F 3
int A[V][F] = { { 1, 2, 3 }, { 4, 5, 6 }, { 7, 8, 9} };
void LeggiElementi()
{
int i, j, temp;
for(i = 0; i < V; i++)
{
for(j = 0; j < F; j++)
{
scanf("%d", &temp );
A[i][j] = temp;
}
}
}
void StampaElementi()
{
int i, j;
for(i = 0; i < V; i++)
{
for(j = 0; j < F; j++)
{
printf("%d ",A[i][j]);
}
printf("\n");
}
}
int MassimaSommaConCella(int ci, int cj)
{
int i, j, somma, sommaMassima;
sommaMassima = 0;
int valore = A[ci][cj];
for(i = 0; i < V; i++)
{
for(j = 0; j < F; j++)
{
if ((i == ci) && (j == cj))
continue;
somma = valore + A[i][j];
if (somma > sommaMassima)
sommaMassima = somma;
}
}
return sommaMassima;
}
void CercaSommaMassima()
{
int i, j, max, somma;
max = 0;
for(i = 0; i < V; i++)
{
for(j = 0; j < F; j++)
{
somma = MassimaSommaConCella(i , j);
if (somma > max)
max = somma;
}
}
printf("Somma Max: %d", max);
}
void main()
{
// LeggiElementi();
StampaElementi();
CercaSommaMassima();
}
Se tu eseguissi questo programma stamperebbe 17 ( somma tra 9 e 8 ).
Guardalo con calma e dimmi se tutto è chiaro. Poi usiamo questo per arrivare alla soluzione giusta.