» »

Zneski?

Zneski?

bigbug ::

Kako bi najlažje s pomočjo kakega programa (morda excel) prišel do tega iz katerih kombinacij zneskov je sestavljen določen znesek? Hvala za pomoč saj mi delo z kalkulatorjem vedno vzame dosti časa8-O

primer:

513,52
689,12
-309,14
1052,19
689,33
-3056,99
-899.01
-121,89
600,22
11,55
3,01
-652,09
2523,69
-1989,86
233,11
22,22
-65,36
1910,01
-652,66
12,13
782,54
1168,73
_______________

Se pravi podani so znesi sedaj moram iz kombinacije raznih zneskov dobiti znesek 1380,69. Kako priti do tega najlažje?

Hvala

Lp
  • spremenil: bigbug ()

jvolk ::

Napišeš si kak program pa je.

bigbug ::

Če bi znal bi si ga že napisal;) ;) ;)

Monster ::

v excelu napis =SUM(zacetna celica:koncna:celica)

to pac napisi v vrstico kje bi rad imel rezultat...
Ka zaboga...

Monster ::

em pa narobe si ti to zracunal ... ni tistih 1309 ampak 2464,37(sestevek negavitnih stevilk je -7747, pozitivnih pa 10211,37), tako da mislim da si se zmotil nekje...
Ka zaboga...

bigbug ::

Nisem se zmotil. Podani so razni zneski in iz raznih kombinacij podanih zneskov moram dobiti 1380,69. Ta znesek pa lahko sestavlja vec podanih zneskov 2,3,4,5....

Moje vprašanje je kako najhitreje skombinirat (kaksen program,excel) zneske med seboj (seštevanje,odštevanje) da bi dobil znesek ki ga iščem, se pravi 1380,69?

Monster ::

čk kaj zdaj ti rabiš .. šeštevek al "razne kombinacije" daj malo bol definiraj ti to ... drugač je pa to excel mišljen
Ka zaboga...

Thomas ::

Išče vse podmnožice zneskov, katerih vsota je 1380,69.

Samo v Exlnu bo to mau počasi. Čeprav se jasno, da.

Oreh je pa NP - go figure!

Tukajle vodimo politiko - don't tell, dont ask!.
Man muss immer generalisieren - Carl Jacobi

snow ::

Brute force.

Sem bil firbčen, kako hitro preišče vse možnosti:

#include <iostream>
#include <cmath>

int main()
{
    float weights[] = {513.52,689.12,-309.14,1052.19,689.33,-3056.99,-899.01,-121.89,600.22,11.55,3.01,-652.09,2523.69,-1989.86,233.11,22.22,-65.36,1910.01,-652.66,12.13,782.54,1168.73};
    
    float target = 1380.69;
    float sum;
    for(unsigned int i=0;i<(1<<(sizeof(weights)/4));i++)
    {
        sum = 0;
        for(unsigned int j=0;j<sizeof(weights)/4;j++)
        {
            sum += ((i>>j)&1)*weights[j];
        }
        if(fabs(sum-target)<0.001)
        {
            for(unsigned int j=0;j<sizeof(weights)/4;j++)
            {
                if((i>>j)&1)
                {
                    std::cout<<weights[j]<<std::endl;
                }
            }
            std::cout<<std::endl;
        }
        
    }
    system("pause");
    return 0;
}


Tam... ene 2 sekundi:
513,52
-309,14
1052,19
689,33
-3056,99
-899,01
600,22
11,55
2523,69
233,11
22,22

-121,89
11,55
-652,09
233,11
1910,01

513,52
689,12
689,33
-3056,99
11,55
3,01
-652,09
2523,69
-1989,86
22,22
-65,36
1910,01
782,54

513,52
600,22
-652,09
2523,69
-1989,86
233,11
22,22
-652,66
782,54

689,12
-309,14
1052,19
689,33
-3056,99
-899,01
-121,89
3,01
233,11
22,22
1910,01
1168,73

689,12
1052,19
689,33
-3056,99
-899,01
-121,89
11,55
3,01
-65,36
1910,01
1168,73

1052,19
-899,01
-121,89
600,22
233,11
-652,66
1168,73

513,52
689,12
1052,19
689,33
-3056,99
-899,01
600,22
3,01
2523,69
-1989,86
22,22
-65,36
-652,66
782,54
1168,73

689,12
1052,19
-3056,99
-899,01
-121,89
600,22
11,55
3,01
-652,09
2523,69
-1989,86
1910,01
-652,66
12,13
782,54
1168,73
Random mutation plus nonrandom cumulative natural selection - Richard Dawkins

snow ::

Vseh kombinacij je 2^22, kar je dobre 4 miljone. Tak, da hitro pospravi kalkulator stran.

Aja, tale moja koda dela verjetno samo do 32 števil. Ampak za vsako dodatno število traja 2x dlje...
Random mutation plus nonrandom cumulative natural selection - Richard Dawkins

Thomas ::

Eksponentna algoritemska odvisnost, ja.

Če bi bilo števil recimo 100 - say goodbye!
Man muss immer generalisieren - Carl Jacobi

snow ::

Sem probval malo tudi EA, ampak je preveč 'razgiban teren', da bi našlo globalni minimum.

Grem raje mal o proteinih študirat...
Random mutation plus nonrandom cumulative natural selection - Richard Dawkins

Thomas ::

Se strinjam.
Man muss immer generalisieren - Carl Jacobi

bigbug ::

Hvala Snow:)

Binji ::

Meni se to slisi sumljivo podobno kaki nalogi o dinamicnem programiranju tako da razisci kaj v tej smeri:)
Kdor ne navija ni Slovenc, hej, hej, hej!

Sayer ::

Brute force bi lahko izboljsal, ce gledas za doloceno kombinacijo kaksna je vsota in potem pogledas koliko negativnih stevil ti je se ostalo. V primeru da abs(vsota negativnih stevi)l ne presega trenutne razlike med vsoto zneska ter pricakovanim rezultatom lahko mirno zakljucis s trenutno kombinacijo. Velja tudi obratno, torej ce imas trenutno negativni znesek gledas sum preostalih pozitivinh stevil. Na ta nacin si zmanjsal prostor za preiskovanje.

LP

Zgodovina sprememb…

  • spremenil: Sayer ()

snow ::

Sprogramiraj, pa prilepi kodo, pa gremo štopat.
Pa povej koliko časa si programiral.
Random mutation plus nonrandom cumulative natural selection - Richard Dawkins


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

Pomoč pri obrazložitvi plačilnih list (strani: 1 2 )

Oddelek: Loža
5811545 (9730) Lonsarg
»

Vrtilna tabela - vsota dveh stolpcev iz dveh različnih tabel

Oddelek: Pomoč in nasveti
7657 (588) Selotejp
»

obrestno obrestni račun

Oddelek: Šola
146917 (2203) Rok22
»

Izobraževalni tečaji in težave s papirji

Oddelek: Loža
81395 (1068) Tody
»

double v bitno in obratno? (c++)

Oddelek: Programiranje
101054 (940) noraguta

Več podobnih tem