Ú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
● ha kódot szúrsz be, használd a PROGRAMKÓD formázási funkciót!
- TCL LCD és LED TV-k
- NOTEBOOK / NETBOOK / Mac beárazás
- Videó stream letöltése
- Milyen alaplapot vegyek?
- Luck Dragon: Asszociációs játék. :)
- Rezsicsökkentés, spórolás (fűtés, szigetelés, stb.)
- Anime filmek és sorozatok
- Temu
- Battlefield 6
- Amlogic S905, S912 processzoros készülékek
- További aktív témák...
- Bivaly Lenovo T14 gen5 (Core Ultra 7 32Gb DDR5 1 Tb SSD) laptopom eladó 2 év gyártói garanciával!
- Insta360 X4 akciókamera Adventure Bundle
- Quadral Chromium Style 35, polchangfal páros
- Dell 3500 üzleti 8.generációs laptop WIN11, 1 év garancia, 256GB SSD, 16GB memória
- Gigabyte AORUS GeForce RTX 5080 MASTER ICE 16GB GDDR7
- Azonnali készpénzes nVidia RTX 3000 sorozat videokártya felvásárlás személyesen / csomagküldéssel
- Apple iPhone 12 Mini 64GB, Kártyafüggetlen, 1 Év Garanciával
- BESZÁMÍTÁS! 64GB(2x32GB) Kingston Fury Beast 3200MHz DDR4 memória garanciával hibátlan működéssel
- 154 - Lenovo LOQ (15IRX9) - Intel Core i5-13450HX, RTX 4060
- Konzol felvásárlás!! Xbox Series S, Xbox Serries X
Állásajánlatok
Cég: NetGo.hu Kft.
Város: Gödöllő
Cég: Promenade Publishing House Kft.
Város: Budapest





