Se consideră tabloul bidimensional cu m linii şi n coloane, care conţine doar valorile {0,1,2}.
Să se determine numerele de ordine ale coloanelor pentru care produsul elementelor este maxim.
Fişierul de intrare prodmax.in conţine pe prima linie numerele m şi n, iar pe următoarele m linii câte n numere naturale separate prin spaţii, reprezentând elementele tabloului.
Fişierul de ieşire prodmax.out va conţine pe prima linie numerele cerute, separate prin spatii, în ordine crescătoare.
Restricţii şi precizări
2≤m,n≤100
numere de ordine ale liniilor sunt între 1 şi m
numere de ordine ale coloanelor sunt între 1 şi n
prodmax.in
4 4
2 1 1 0
1 1 1 1
2 2 2 1
1 2 1 1
prodmax.out
1 2
artur99:
pai e usor :D stochezi intr-un vector valorile produselor fiecarei coloane, si in acelasi timp stochezi intr-o variabila si maximul
Răspunsuri la întrebare
Răspuns de
1
#include <fstream>
#include <vector>
using namespace std;
ofstream fout("prodmax.out");
ifstream fin("prodmax.in");
const int NMAX = 10000;
int n, m;
vector<int> indici;
vector<vector<int>> v(NMAX);
int main()
{
fin >> n >> m;
v.resize(n);
for(int i=0; i<n; i++)
v[i].resize(m);
for(int i=0; i<v.size(); i++)
for(int j=0; j<v[i].size(); j++)
fin >> v[i][j];
for(int i=0, new_idx = 0, prod=1, x=0; i<m; i++, prod = 1) {
for(int j=0; j<n; j++) prod *= v[j][i];
if(prod > x) {
x = prod;
indici.erase(indici.begin(), indici.end());
indici.push_back(i+1);
}
else if(prod == x)
indici.push_back(i+1);
else
continue;
}
for(auto x : indici) fout << x << ' ';
return 0;
}
#include <vector>
using namespace std;
ofstream fout("prodmax.out");
ifstream fin("prodmax.in");
const int NMAX = 10000;
int n, m;
vector<int> indici;
vector<vector<int>> v(NMAX);
int main()
{
fin >> n >> m;
v.resize(n);
for(int i=0; i<n; i++)
v[i].resize(m);
for(int i=0; i<v.size(); i++)
for(int j=0; j<v[i].size(); j++)
fin >> v[i][j];
for(int i=0, new_idx = 0, prod=1, x=0; i<m; i++, prod = 1) {
for(int j=0; j<n; j++) prod *= v[j][i];
if(prod > x) {
x = prod;
indici.erase(indici.begin(), indici.end());
indici.push_back(i+1);
}
else if(prod == x)
indici.push_back(i+1);
else
continue;
}
for(auto x : indici) fout << x << ' ';
return 0;
}
Alte întrebări interesante
Limba română,
9 ani în urmă
Limba română,
9 ani în urmă
Engleza,
9 ani în urmă
Matematică,
9 ani în urmă
Matematică,
9 ani în urmă
Matematică,
9 ani în urmă