Pagini recente » Cod sursa (job #280511) | Cod sursa (job #983589) | Cod sursa (job #1196274) | Cod sursa (job #2192107)
///FI MA ATENT SI IAU MAI PAS-CU-PAS!
///PENTRU A OBTINE O MATRICE CU SUMA MAXIMA TREBUIE SA:
///CAUTAM CELE MAI MICI NUMERE SI SA LE FACEM POZITIVE dar:
///DACA TOATE NUMERELE SUNT POZITIVE
#include <fstream>
using namespace std;
ofstream fout("flip.out");
#define dmax 17
void afisare(int n, int m, int mat[][dmax])
{
int i,j;
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
{
fout<<mat[i][j]<<" ";
}
fout<<endl;
}
}
int mat[dmax][dmax];
int scol[dmax];
int main()
{
int n,m,i,j,sl=0,sc=0,iC=0,jC=0,minn=1000000;
ifstream fin("flip.in");
fin>>n>>m;
for(i=0;i<n;i++)
{ sl=0;
for(j=0;j<m;j++)
{
fin>>mat[i][j];
sl=sl+mat[i][j];
scol[j]=scol[j]+mat[i][j]; ///CAUT SUMA MINIMA PE LINII, IMPLICIT LINIA DORITA PENTRU COMUTAT +
} ///RETIN INTR UN VECTOR SUMELE PE COLOANE
if(sl<minn)
{
minn=sl;
iC=i;
}
}
fout<<"iC="<<iC<<endl;
/*for(i=0;i<m;i++)
fout<<scol[i]<<" ";
fout<<endl;*/
minn=1000000;
for(i=0;i<m;i++) ///aici i ul implementeaza coloane
if(scol[i]<=minn)
{
minn=scol[i];
jC=i;
}
fout<<"jC="<<jC<<endl;
/*int dim;
if(n>m) dim=n;
else dim=m;
*/
/*int retinut;
retinut=mat[iC][jC];*/
for(i=0;i<m;i++)
fout<<scol[i]<<" ";
fout<<endl;
fout<<"inainte de susta"<<endl;
for(i=0;i<n;i++)
mat[i][jC]=mat[i][jC]*(-1);
afisare(n,m,mat);
fout<<endl;
///if aicisa:
if(mat[iC][jC]<0) /*daca a fost pozitiv odinioara*/
{
scol[jC]=scol[jC]+mat[iC][jC];
}
fout<<"dupa susta"<<endl;
for(i=0;i<n;i++)
mat[i][jC]=mat[i][jC]*(-1);
afisare(n,m,mat);
fout<<endl;
//mat[iC][jC]=mat[iC][jC]*(-1); ///aici e problema; ia o usor
for(j=0;j<m;j++)
mat[iC][j]=mat[iC][j]*(-1);
int Smax;
Smax=0;
fout<<"Smax inainte de for urile pe matrice= "<<Smax<<endl;
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
{
//fout<<"Smax=Smax+mat["<<i<<"]["<<j<<"]="<<Smax+mat[i][j]<<endl;
fout<<mat[i][j]<<" ";
Smax=Smax+mat[i][j];
fout<<"Smax= "<<Smax<<endl;
}
fout<<endl;
}
fout<<Smax;
fin.close();
fout.close();
return 0;
}