- Honor 200 Pro - mobilportré
- Samsung Galaxy Z Fold7 - ezt vártuk, de…
- Motorola Edge 50 Neo - az egyensúly gyengesége
- Samsung Galaxy Z Flip5 - ami kint, az van bent
- Xiaomi 14T Pro - teljes a család?
- Google Pixel topik
- Fotók, videók mobillal
- Hat év támogatást csomagolt fém házba a OnePlus Nord 4
- iPhone 17 képernyővédő üvegek mutatják meg a méretkülönbségeket
- Honor Magic V2 - origami
Hirdetés
Új hozzászólás Aktív témák
-
Volt egy beadandó feladatom, aminek tegnap este járt le a határideje. Nem sikerült elérnem a 100 pontból 50-et, és buktam a tárgyat. 40 pont volt a legjobb eredmény. Nagyon kiváncsi vagyok a helyes (vagy legalább helyesebb) megoldásra, szeretném megérteni ezt az algoritmust, illetve a jövőben ha újra felveszem ezt a tárgyat akkor sokat segítene.
Ez volt a feladat, mohó algoritmussal kellett megoldani:
3 féle megoldás született (mgoogyi és kobe24 fórumtársunk segített benne rengeteget):
27 / 100 pontos: pastebin
Ez a futási hiba, megszakítási kód 11 a sulis oldal leírása szerint: illegális memória hivatkozás.33 / 100 pontos: pastebin
40 / 100 pontos: pastebin
A suliban csak 1 órát foglalkoztunk ezzel, egy nagyon egyszerű feladatot oldottunk meg, ami így nézett ki: pastebin mohó gyak
Illetve egy minta kódot találtam még, ami ilyen: mohó mintafeladat
Az N max értéke 1 millió lehet, ezért pl a 2. és 3. kódnál amit belinkeltem túllépi az időlimitet, pedig valószínűleg helyes lenne az output.
Hogyan lehetne megoldani?
-
-
Tudna valaki S.O.S. segíteni?
Van egy feladatom amit nagyjából sikerült megcsinálnom, de van benne hiba.
Így néz ki a kódom:
#include <iostream>
using namespace std;
const int maxMatrix = 1000;
int varosDb;
int napDb;
int homerseklet[maxMatrix][maxMatrix];
int main()
{
std::ios::sync_with_stdio(false);
cin >> varosDb >> napDb;
for(int i = 0; i < varosDb; i++){
for(int j = 0; j < napDb; j++){
cin >> homerseklet[i][j];
}
}
int maxHomerseklet[maxMatrix]={};
for(int i = 0; i < varosDb; i++){
for(int j = 0; j < napDb; j++){
if (homerseklet[i][j] > maxHomerseklet[j]){
maxHomerseklet[j] = homerseklet[i][j];
}
}
}
int hanyszorVan[maxMatrix]={};
int hanyszorVanHely[maxMatrix] = {};
for(int i = 0; i < varosDb; i++){
for(int j = 0; j < napDb; j++){
if (homerseklet[i][j] == maxHomerseklet[j]){
hanyszorVanHely[j] = i + 1;
hanyszorVan[i]++;
}
}
}
int hanyszorVanMax = 0;
for (int i = 0; i < varosDb; i++){
if (hanyszorVan[i] > hanyszorVanMax){
hanyszorVanMax = hanyszorVan[i];
}
}
int darab = 0;
for (int i = 0; i < varosDb; i++){
if (hanyszorVanMax == hanyszorVan[i]){
darab++;
}
}
cout << darab << " ";
for (int i = 0; i < darab; i++){
cout << hanyszorVanHely[i] << " ";
}
return 0;
}Probléma:
A példa inputtal jól működik a program, de ha megváltoztatom az inputot pl erre:
3 5
10 15 12 10 10
12 16 16 16 20
12 16 16 16 20
(a 2. és 3. sorban ugyanazok a számok vannak)
akkor az outputra azt adja ki, hogy: 2 3 3
De azt kéne kiadnia, hogy 2 2 3 (2 darab, 2. és 3. sor)Vagy egy másik input:
5 5
5 5 5 5 5
2 2 2 2 2
5 5 5 5 5
4 4 4 4 4
5 5 5 5 5Ennél az output: 3 5 5 5, de a helyes az 3 1 3 5 lenne
Hogyan tudnám ezt javítani?
-
-
válasz
Ron Swanson #4171 üzenetére
Próbálkozom, de nem sikerül
Vasárnapig meg kéne csinálnom, addig kell beadni. -
-
Az előző problémát megoldottam, viszont most ismét szükségem lenne egy kis segítségre. (Ez már egy másik feladat.)
Van ez a kódom:
#include <iostream>
#include <vector>
class TVendegek
{
public:
int erkezes;
int tavozas;
TVendegek(const int E, const int T):
erkezes(E), tavozas(T) {}
const bool talalkoztak(const TVendegek & g) const;
const int tartozkodasiIdo() const {
return tavozas > erkezes;
}
};
const bool TVendegek::talalkoztak(const TVendegek & g) const
{
const TVendegek * a;
const TVendegek * b;
if (this->erkezes > g.erkezes) {
a = &g;
b = this;
} else {
a = this;
b = &g;
}
return (a->tavozas >= b->erkezes);
}
int main()
{
using namespace std;
int N, i, Ei, Ti;
vector<TVendegek> vendegek;
int max_index, max_darab, darab, j;
cin >> N;
for (i = 1; i <= N; i++) {
cin >> Ei >> Ti;
vendegek.push_back(TVendegek(Ei, Ti));
}
max_index = 0;
max_darab = 0;
for (i = 1; i < vendegek.size(); i++) {
darab = 0;
for (j = 0; j < vendegek.size(); j++) {
if (j != i) {
if (vendegek[i].talalkoztak(vendegek[j])) {
darab++;
}
}
}
if (max_darab < darab) {
max_darab = darab;
max_index = i;
}
}
cout << (max_index + 1) << endl;
cout << max_darab << endl;
return 0;
}A probléma pedig az, hogy a feladatnál meg van adva, hogy 0,2 másodperc az időlimit. Kis mennyiségű adatnál szépen le is fut, de ha mondjuk N = több ezer, akkor nem fut le 0,2s alatt...
-
Sziasztok!
Van egy feladat, amit nem tudok megoldani, és örülnék egy kis segítségnek.
Ez lenne a feladat: KÉPOdáig eljutottam, hogy megadtam a változókat és bekértem azokat:
#include <iostream>
using namespace std;
int main()
{
int orhelyekSzama;
int orsegekSzama;
cin >> orhelyekSzama;
cin >> orsegekSzama;
int sorszam[orhelyekSzama];
for(int i=1; i<orhelyekSzama; i++){
cin >> sorszam[i];
}
}Még csak a nagyon alapokat tanultuk: if else, for ciklus, tömbök. Szóval egyszerű feladat, de mégsem tudom folytatni
Új hozzászólás Aktív témák
Hirdetés
● ha kódot szúrsz be, használd a PROGRAMKÓD formázási funkciót!
- Általános igazgatóhelyettes tábla üvegből eladó
- ALIENWARE Area-51 R6 Threadripper Edition 1920X
- DDR5 8/ 16/ 32GB 4800-5600MHz SODIMM laptop RAM, több db- számla, garancia
- Satechi 200w USB-C 6-port PD GAN - UK / Számla / Garancia /
- LG 24GQ50F-B - 24" VA / 1920x1080 FHD / 165Hz 1ms / AMD FreeSync Premium / Adaptive Sync / HDR 10
Állásajánlatok
Cég: FOTC
Város: Budapest