- Mozilla Firefox
- Telekom otthoni szolgáltatások (TV, internet, telefon)
- Mesterséges Intelligencia topik
- Proxmox VE
- Ubuntu Linux
- OpenWRT topic
- Linux kezdőknek
- Kodi és kiegészítői magyar nyelvű online tartalmakhoz (Linux, Windows)
- Robotkart irányított a majom a kínai Neuralink agyi chipjével
- Hálózati / IP kamera
Aktív témák
-
Szsolt
tag
Jah igazad van: 2 4 5-öt akartam írni...
Na és így?
Elvileg így is monoton...
[Szerkesztve] -
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] -
Szsolt
tag
Próbáld meg ezt...
#include <stdio.h>
#include <stdlib.h>
int t[]={12,2,11,4,10,7};
int index[3];
int length=6, max=1;
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);
}
int main() {
int i;
for (i=0; i<length; ++i)
szamolmax(i,1);
printf(''%d\n'',max);
for (i=0; i<length; ++i)
mentes(i,1);
return 0;
} -
-
Szsolt
tag
válasz Chaoti[X] #61 üzenetére
Hát ez akkora hülyeség, amekkora ez az ország....
Tudod van 1 olyan tantárgy, hogy mest.int, aminek a lényege a rekurzivitás, mert egyes feladatokat nem tudsz másképp megoldani.
Szvsz ezt minden tisztességes programozónak ismernie kell...
Az más dolog, hogy ide ehhez a feladathoz túl lassú... -
Szsolt
tag
Mér nem tanulsz meg C-ül?
Eleinte én is Pascallal nyomultam, és mikor C-t kezdtem el tanulni, még undorom volt..., de mára szvsz a C a legjobb eljárás-orientált nyelv, és azt szeretem benne, hogy kib@szott rövid kódokat lehet vele írni.
(pl. ami Pascalban 10 sor az C-ben 3-4 sorba össze lehet zsúfolni) -
Szsolt
tag
Elemeztem 1 kicsit a kódodat...vérprofi
Különösen ez a részlet tetszett:
for t := n downto 1 do begin
aktualisa := a[t];
maxsorhossz := 0;
for j := t to n do begin
if a[j] >= aktualisa then begin
if b[j]+1 > maxsorhossz then maxsorhossz := b[j]+1;
end;
end;
b[t] := maxsorhossz;
end;
Amilyen eccerű, olyan nehezen jöttem volna rá. (ha persze egyáltalán rájöttem volna )
Aktív témák
- Bomba ár! HP EliteBook 840 G5 - i5-8G I 8GB I 128GB SSD I 14" FHD I HDMI I Cam I W10 I Gari!
- The Last of Us Part I Ps5
- Bomba ár! HP EliteBook 830 G6 - i7-8G I 8GB I 256GB SSD I 13,3" FHD I HDMI I Cam I W11 I Gari!
- Bomba ár! Dell Latitude 5580 - i5-G6 I 8-16GB I 256 SSD I 15,6" FHD I HDMI I CAM I W10 I Garancia
- Bomba ár! Dell Latitude 5490 Touch - i5-8G I 8GB I 256SSD I 14" FHD Touch I Cam I W11 I Garancia!