Sziasztok!
Az lenne a kérdésem h itt találhattok 1 pdf formátumú feladatot melyben nem bírok rájönni a fa felépítési algoritmusára! Probáltam több megoldást alkalmazni! de arra nem tudtam rájönni h mi alapján épül fel a fa! A lényeg az lenne h magamtól fel tudjam építeni a fát! Amit az Útmutatóban adtak azt értem az alapján a belső pontokat meg tudom határozni (pl. "jobb részfályának minimuma kerül a pontba" nem pontos az idézés sry ezért).
A feladatnak felező algoritmussal álltam neki! A gond csupán annyi volt h a párosaknál a számra amire Eva gondolt NEM-t dobott! Így arra gondoltam a számot "mod 2 " vel megdolgoztatom és ha 0 akkor a maradék két szám MAXIMUMát veszem! ellenkező esetben adja magát! ÁM pl az n=100 és a szám amire gondoltak 99 akkor az algoritmus nem fog jól működni! A felezéseknéál lefelé kerekítettem!
Ettől jobb algoritmus sajnos nem jutott eszembe! Minden ötletet szivesen fogadnék! :)
Előre is thx a válaszokért!
Zsolt
- 1881 megtekintés
Hozzászólások
algoritmusok 1? :)
nezz korul itt
- A hozzászóláshoz be kell jelentkezni
hali!
Thx a tippet végig olvasom! bár ahogyan csak így gyorsan végig futottam tettek bele csavart mrt nem azt kérdezik mint nekem de elolvasom! Bár inkább magam szeretnék írni rá progit nem pedig ctrl+c majd ctrl+v -s megoldást! Ezért szeretném megérteni h hogyan is működik illetve 1 kis rávezetést h talán mi lehetne a jo vagy a felezővel mit kellene csinálni h jobb legyen!
De mondom elolvasom a topicot! Thx!
Zsolt
-------------
2.6.17.8 Debian testing
- A hozzászóláshoz be kell jelentkezni
n<=2^k, különben nem megoldható a feladat
tehát ha n<=2^k, akkor veszed a pascal-háromszög k-adik sorát (a 'csúcsa' a 0. sor, tehát
0: 1
1: 1 1
2: 1 2 1
3: 1 3 3 1
)
tehát ha k==3, akkor:
h=0 jobbralépéssel legfeljebb 1,
h=1 jobbralépéssel legfeljebb 1+3
h=2 jobbralépéssel legfeljebb 1+3+3,
h=3 jobbralépéssel legfeljebb 1+3+3+1
szám található ki.
(szerk.: bocs, hogy csak a megoldást írtam le, ha akarod, leírom, hogyan jutottam idáig:])
- A hozzászóláshoz be kell jelentkezni
offtopic: "...részfályának..." -> részfájának! Ilyet sem láttam az általános iskola harmadik osztálya óta, már megbocsáss!
- A hozzászóláshoz be kell jelentkezni
Elnézést kérek a durva helyesírási hibáért de tegnap este próbáltam ezt összedobni + meg kell csinálnom a munkámat szval picit lehet h túl vállaltam magam és ezen okból kifolyólag szét vagyok csúszva... :( sajnalom és sry!
Zsolt
-------------
2.6.17.8 Debian testing
- A hozzászóláshoz be kell jelentkezni
Ha azt keresed, hány levél fér egy n magas max. h jobbra élet tartalmazó fában, a problémát két részre tudod osztani: a fa egy n-1 magas, h-1 jobbra élet tartalmazó jobb részfából, és egy n-1 magas, h jobbraélet tartalmazó bal részfából áll. Azt tudjuk, hogy egy 1 magas fában (akármennyi h-val) max. 2 levél lehet. Azt is tudjuk, hogy 1 jobbraélet tartalmazó fában magasság+1 leveled lehet. Táblázatban:
10
9 2 4
8 2 4
7 2 4
6 2 4
5 2 4 8
4 2 4 8
3 2 4 8 15
2 2 4 7 11 16 22
1 2 3 4 5 6 7 8 9 10 11
/ 1 2 3 4 5 6 7 8 9 10 <- magasság
^
h
(Nyilván pont a főátlóban lesznek a 2 hatványok.)
bármelyik ([i][j]) belső pont [i-1][j-1]+[i-1][j] összegként megkapható. Így ha azt keresed, hogy mi az a legkisebb szám, ami nem kisebb n-nél adott h esetén, egyszerűen megkapod a magasságot.
u.i.: nekem is ez volt a köt.prog.-om.
- A hozzászóláshoz be kell jelentkezni
igen, így:)
- A hozzászóláshoz be kell jelentkezni
Lehet hogy én értem félre a kérdezőt(csak átfutottam a belinkelt pdfet), de ott mintha a bináris fa magassága és a leveleinek száma lenne adott, és az a kérdés, hogy létezik-e ilyen fa(ugye n>2^k-ra, és n<=k-ra nem), és ha létezik, akkor minimalizáld a benne lévő jobbra élek számát.
- A hozzászóláshoz be kell jelentkezni
A fenti megoldás arra vonatkozik, hogy adott k-hoz (magasság) olyan h-t keresünk, hogy a táblázatban a (h,k)-hoz tartozó nmax érték ne legyen kisebb, mint a mi n-ünk, és ezek közül a minimális legyen. Tehát k=4-hez ha n a [6..11] intervallumból van, akkor h=2.
- A hozzászóláshoz be kell jelentkezni
Ezen kitételre nem is gondoltam volna! Neked is nagyon szépen köszönöm a segítséget!!!
Zsolt
-------------
2.6.17.8 Debian testing
- A hozzászóláshoz be kell jelentkezni
Köszönöm szépen a segítséget! Nagy mértékben segített a cél elérésében! Nagyon köszönöm!
Zsolt
-------------
2.6.17.8 Debian testing
- A hozzászóláshoz be kell jelentkezni
A feladatot kicsit kicsavarva, konstans 1 nem válasszal számolhatsz. :-)
A kérdések: Ugye, igaz, hogy nem az 1-re gondoltál? :-)
Csaba
- A hozzászóláshoz be kell jelentkezni
hehe! Ez jó! :)
Zsolt
-------------
2.6.17.8 Debian testing
- A hozzászóláshoz be kell jelentkezni
Csak a k nem lesz minimális...
De hát semmi sem tökéletes. :-)
Csaba
- A hozzászóláshoz be kell jelentkezni
És a megoldás mely még csak sajnos 16ból 11-pontos (szval még csak beta :) ) de meg kiindulásnak jó ha vki hasonló problémával küzd! :)
#include
int main(){
int i,j,a[101][101],k,n,value,l,tomb[101],min;
FILE *fbe, *fki;
fbe=fopen("be.txt","rt");
fscanf(fbe,"%d %d",&n,&k);
fclose(fbe);
int hatvany(int a, int b)
{
if (b == 0)
{
return 1;
} else {
value = a;
for (i = 1; i < b; i++ )
{
value = value * a;
}
return value;
}
}
for (i=0;i<100;i++)
{
a[0][i]=1;
a[i][0]=1;
}
fki=fopen("ki.txt","wt");
l=0;
min=101;
if((n <= k) && (n > hatvany(2,k)))
{
min=-1;
}
else
{
for (i=1;i<=k;i++){
for (j=1;j<=k;j++){
a[i][j]=a[i-1][j]+a[i-1][j-1];
if(a[i][j] >= n)
{
tomb[l] = j;
l++;
}
}
}
}
for(i=0;i
{
if(tomb[i] < min) min = tomb[i];
}
fprintf(fki,"%d",min);
fclose(fki);
return 0;
}
Zsolt
-------------
2.6.17.8 Debian testing
- A hozzászóláshoz be kell jelentkezni
Hogy sikerült?
- A hozzászóláshoz be kell jelentkezni
Hello! Köszönöm jól! :) max 16ból 13 pont lett.
Próbáltam javítgatni és mivel max 10* lehet beküldeni a és 9ig próbálkoztam a javítással de nem ment :( pl 200000000 6 -nál rosszat számol ki :( ! Szval utsóra azért beküldtem a 13 pontosat! :)
Még1* köszönöm a segítségeteket!
Zsolt
-------------
2.6.17.8 Debian testing
- A hozzászóláshoz be kell jelentkezni