- antikomcsi: Való Világ: A piszkos 12 - VV12 - Való Világ 12
- ubyegon2: Airfryer XL XXL forrólevegős sütő gyakorlati tanácsok, ötletek, receptek
- Sub-ZeRo: Euro Truck Simulator 2 & American Truck Simulator 1 (esetleg 2 majd, ha lesz) :)
- gban: Ingyen kellene, de tegnapra
- Szevam: Érzelmi magabiztosság/biztonság - miért megyünk sokan külföldre valójában?
Aktív témák
-
gabesz82
senior tag
Adott egy egész számokból álló A = (a_1, . . . , a_n) sorozat. Számítsuk az A sorozat leghosszabb monoton nem-csökkenő részsorozatának hosszát, és adjunk is meg egy ilyen részsorozatot. Egy A sorozat részsorozata minden
olyan sorozat, amely A-ból annak bizonyos elemeinek elhagyásával kapható.
Bemenet:
A feladat.be szöveges állomány első sora a sorozat n (1 <= n <= 10000) hosszát tartalmazza. A második sor pontosan n egész számot tartalmaz egy-egy szóközzel elválasztva. A második sorban minden x számra teljesül,
hogy 1 <= x <= 1000000.
Kimenet:
A feladat.ki szöveges állomány első sora a leghosszabb monoton nemcsökkenő részsorozat m hosszát tartalmazza. A második sor pontosan m különböző számot tartalmazzon egy-egy szóközzel elválasztva, a bemeneti (a_1, . . . , a_n) számsorozat azon 1 <= i_1 < i_2 < . . . < i_m <= n indexeit, amelyek ebben a sorrendben egy leghosszabb monoton nemcsökkenő részsorozatát alkotják a bemeneti sorozatnak, tehát a_i_1 <= a_i_2 <= . . . <= a_i_m.
Példa bemenet és kimenet
feladat.be
6
12 2 11 4 10 7
feladat.ki
3
2 4 6
Ez lenne a feladat:
Maga a beolvasás kiíratás megy csak a program lényege, az algoritmus hiányzik még hozzá... Nagyon megköszöném a segítséget, köszi előre is mindenkinek...PSN: Morfologus82
-
Miracle
senior tag
ez nekem egy nagyon szép visszalépéses algoritmusnak tűnik, de most nincs kedvem ilyet írni, de ha utánanézel a visszalépéses algoritmusoknak, vagy angolul a backstep-nek, akkor találhatsz értékelhető infót. ha nem, és holnap lesz kedvem, akkor megírom. hová kell?
értelmező késziszótár :: rekurzió --> lásd : rekurzió
-
Miracle
senior tag
kijött az ADA beadandóm, nem lesz időm, sorry. azért sok sikert!
értelmező késziszótár :: rekurzió --> lásd : rekurzió
-
heihachi
addikt
Nem értem, hogy hogy jött ki 2 4 6 ...
"Lehet a Shift 2 már realisztikusabb mint a valóság" by NOD
-
gabesz82
senior tag
Valaki??? Senki?
PSN: Morfologus82
-
gabesz82
senior tag
a
feladat.ki módosul:
3
2 4 7PSN: Morfologus82
-
Gyula_
tag
Ha az idő-és tárigényre semmilyen megkötés sincs, akkor nem mindegy, hogy milyen algoritmust ír?
Most nem gondoltam bele, de biztos könnyen kitalálható valamilyen egyszerű, ami véges idő- és tárigénnyel megoldja.
Hm?
Ha tévedek, szóljatok... -
Chaoti[X]
csendes tag
Ha jól sejtem ez egy Algoritmusok kötelező progi szóval tuti hogy számít az idő és memóriahasználat.
Talán 1mp és 16 Mb? -
corm
senior tag
a 2,4,6 jo mert ugye ezek indexek a 2. indexu elem a 2 a 4. indexu a 4 a 6. indexu a 7.
es ugye van aza kikotes h az indexeknek is noveknoknek kell lenniuk, ezert nemlehet ezt folytatni, mert a 6. az utolso(legnagyobb) indexY N W A
-
corm
senior tag
azert a sok ''huje'' progmatos hogy rakattant egybol a topcira
Y N W A
-
heihachi
addikt
Na jó, kezdem Én, aztán majd javítgatjuk közösen... Tehát:
Adott a[] tömb, amelynek van n eleme. Ez tárolja a beolvasott számokat.
Adott b[] tömb, szintén n eleme van, és b[j]-ben tárolódik az, hogy a[j] elemre tekintve hány releváns elem van a tömbben. (Ez így bonyolultan hangzik, de mindjárt írom rendesebben...)
Tehát elindulsz a[] tömb első elemétől. Kinevezel egy k változót keresési értéknek, k=a[j] azaz kezdetben a[1]. Megvizsgálod, hogy a[j+1] nagyobbegyenlő-e, mint k.
- Ha nem, akkor léphetsz is tovább, és megvizsgálod, hogy a[j+2] nagyobbegyenlő-e, mint k.
- Ha igen, akkor k=a[j+1] és b[j]++, és nézed tovább (azaz a[j+2]>=k).
Tehát ez két egymásba ágyazott ciklus.
Így végigjárva a teljes a[] tömböt a b[] tömbben a legnagyobb érték a kérdéses kimeneti fájl első sora lesz.
Ezek után meg kell nézni, hogy melyik ez a legnagyobb érték, és az előbb leírt elvhez hasonlóan meghatározni a megfelelő indexeket. Itt már nem kell bejárni a teljes tömböt, csak a kérdéses elemre, kell a fentieket megycsinálni, és kiírni az indexet.
Na egyenlőre ennyi. Sztem műxik, de nem biztos, hogy jó, pláne meg nem biztos, hogy értelmesen írtam le
[Szerkesztve]"Lehet a Shift 2 már realisztikusabb mint a valóság" by NOD
-
gabesz82
senior tag
Sziasztok!
Szóval köszönöm az eddigi segítségeket! Innentől már megpróbálkozunk, de azért ha valamit még hozzá tudtok tenni akkor szívesen várom a segítségeket... Köszi mindenkinek...PSN: Morfologus82
-
gabesz82
senior tag
Azért ha tudtok segítsetek ám, mert én inkább a hardverhez értek valamicskét, a programírás nem a legnagyobb erősségem... Szóval csak hajrá az ötletekkel
PSN: Morfologus82
-
Badb0y
addikt
2szer vágtak már meg c programozásból következőre kivágnak , de hozzá kell tenni semmit nem gyakoroltam, ugyhogy kérhetnék vmi tanácsot hogy kezdjek neki? Milyen könyv? Megvettem a Computerbooksos programozzunk c nyelvent ezt ajánlották nagyon.
Minőségi laptopok https://notebookokhu.business.site/
-
gabesz82
senior tag
-
-
gLes
őstag
Blááá hogy útáltam ezeket az algoritmusokat
-
gabesz82
senior tag
gLes és segíteni nem tudsz??
PSN: Morfologus82
-
Szsolt
tag
Jah igazad van: 2 4 5-öt akartam írni...
Na és így?
Elvileg így is monoton...
[Szerkesztve] -
heihachi
addikt
EZ A KÓD NEM MŰKÖDŐ PASCAL KÓD!!!
De reméljük érthetőbb, mint az előző leírásom. Ha így sem megy, akkor megírom majd télleg pascalban, csak az holnap du előtt nincs meg...
#ennyi elem van a tömbben
n = 50;
#ebben a tömbben vannak a fájlból beolvasott adatok
a = array[1..n] of longint;
#ez nekünk egy segédtömb
#elegánsabb lenne, ha a[] tömbb többelemű lenne, de...
b = array[1..n] of longint;
#kigyűjtjük b[] tömbbe, hogy a[] tömb egyes elemeire nézve a tömbben 'mögötte' #hány nála nagyobb-egyenlő elem van
for t:= 1 to n-1 do begin
k := a[t];
for j := t+1 to n do begin
if k <= a[j] then begin
k := a[j];
b[t] := b[t]+1;
end;
end;
end;
b[n] := 0;
#ezek után a b[] tömbb legnagyobb eleme meg is felel nekünk
#ha több maximum van, akkor több megoldás van
#azért visszafele nézem, mert így s sorszám után a lehető legkevesebb elem lesz #a[] tömbben, de még a feltételnek így is megfelel
max := b[n];
for t := n-1 downto 1 do begin
if max<b[t] then max := b[t];
s := t;
end;
#max változó mehet ki a kimeneti fájl első sorába
writeln(max);
#most pedig kiválogatjuk a[] tömbből a kérdéses elemeket
#nem kell végignézni az egész tönböt, csak onnan kell indulni, ahol a maximumot #megállapítottuk
#itt jön jól, hogy az előbb visszafele néztünk a tömb maximumához tartozó #sorszámot, így most a lehető legkevesebb elemet kell átvizsgálni
k := a[s];
write(s, ' ');
for j := s+1 to n do begin
if a[j] >= k then begin
k := a[j];
write(j, ' ');
end;
end;
Hogy belefér-e 16 megába, meg nemtom milyen megkötésekbe, azt nem tom...
[Szerkesztve]"Lehet a Shift 2 már realisztikusabb mint a valóság" by NOD
-
heihachi
addikt
Íme:
program Projectphc;
{$APPTYPE CONSOLE}
uses
SysUtils;
const
n = 6;
var
a : array[1..n] of integer;
b : array[1..n] of integer;
k,j,t,s,max,bol : integer;
begin
a[1] := 12;
a[2] := 2;
a[3] := 11;
a[4] := 4;
a[5] := 10;
a[6] := 7;
b[1] := 0;
b[2] := 0;
b[3] := 0;
b[4] := 0;
b[5] := 0;
b[6] := 0;
for t:= 1 to n-1 do begin
k := a[t];
for j := t+1 to n do begin
if k <= a[j] then begin
inc(b[t]);
end;
end;
end;
b[n] := 0;
max := b[1];
s := 1;
for t := 2 to n do begin
if max < b[t] then begin
max := b[t];
s := t;
end;
end;
k := a[s];
write(s, ' ');
if s <> n then begin
for j := s+1 to n do begin
if a[j] >= k then begin
bol := 0;
if j+1 > n then
write(j, ' ')
else
for t := j+1 to n do begin
if (a[t] < a[j]) and (a[t] >= k) then else bol := 1;
end;
if bol = 1 then begin
k := a[j];
write(j, ' ');
end;
end;
end;
end;
readln;
end."Lehet a Shift 2 már realisztikusabb mint a valóság" by NOD
-
Szsolt
tag
Hi Gabesz. Ahogy megígértem, itt a kód:
Annyit kell róla tudni,hogy a képernyőre írja a megoldásokat. Ha több van akkor mindet. Nálam működik, többre is kipróbáltam, de nem tudom garantálni, hogy szélsőséges esetekre is működik.
#include <stdio.h>
#include <stdlib.h>
int *t, *index, length, max=1;
int *lefoglal(int meret) {
int *tomb=(int*)calloc(meret,sizeof(int));
return tomb;
}
void beolvas() {
int i=0;
FILE *f=fopen(''feladat.be'',''r'');
fscanf(f,''%d'',&length);
t=lefoglal(length);
while (fscanf(f,''%d'',&t[i++])!=EOF);
}
void kiir() {
int i;
for (i=0; i<max; ++i)
printf(''%d '',index+1);
printf(''\n'');
}
void szamolmax(int n, int db) {
int i;
for (i=n+1; i<length; ++i)
if (t[n]<t) szamolmax(i,db+1);
else if (db>max) max=db;
if (db>max) max=db;
}
void mentes(int n, int db) {
int i;
index[db-1]=n;
if (max==db) kiir();
for (i=n+1; i<length; ++i)
if (t[n]<t) mentes(i,db+1);
}
void felszabadit() {
free(t);free(index);
}
int main() {
int i;
beolvas();
for (i=0; i<length; ++i)
szamolmax(i,1);
index=lefoglal(max);
printf(''%d\n'',length);
for (i=0; i<length; ++i)
mentes(i,1);
felszabadit();
return 0;
}
Üdv!
[Szerkesztve] -
Badb0y
addikt
Basszus de megy ez nektek
Hogy tanuljak meg én is b@33z@ megMinőségi laptopok https://notebookokhu.business.site/
-
heihachi
addikt
De jó!!! a lenne ilyen pascalban, akkor ott lenne egy pass de nincs (vagyis van elméletileg a magában álló ; de az meg nem állhat else előtt)
Vagy meg lehetne fordítani a feltételt is...
És műxik is.
Kipróbáltam pár esetre, és tutira hozza a várt eredményt.
De látom már megvan c-ben is
[Szerkesztve]"Lehet a Shift 2 már realisztikusabb mint a valóság" by NOD
Aktív témák
Állásajánlatok
Cég: Promenade Publishing House Kft.
Város: Budapest
Cég: Ozeki Kft.
Város: Debrecen