czy jest na to algorytm?

0

witam wszystkich serdecznie
mam trzy dane
a : 2 grosze
b : 5 groszy
c : 10 groszy
powinnam znalezc algorytm ktory wyswietli wszystkie mozliwe sposoby na otrzymanie 1 zl
za pomoca tych trzech danych np:
1zl = 50 2gr
1zl = 45
2 + 2 5
1zl = 40
2 gr + 4 5gr
1zl = 35
2gr + 6 5gr
1zl = 30
2gr + 8 5gr
1zl = 25
2gr + 10 * 5gr
....
ogolem jest 66 sposobow
czy ktos zna algorytm, ktory moglby mi w tym pomoc?

3
for(int ile10=0;ile10<=10;ile10++)
    for(int ile5=0;5*ile5<=(100-10*ile10);ile5+=2)
    {
          int ile2 = (100-10*ile10-5*ile5) >> 1;
          //wypisz, dodaj do kolekcji,...
    } 
0

jw. a w przypadku bardziej ogólnym: rekurencja

0

Wg mnie rekurencja w tym przypadku nieopłacalna, zaś for'y jak podał @bogdans da się sprowadzić do:

import java.io.*;

class Ideone
{
    static void calc(int[] val,int target)
    {
        int[] mul=new int[val.length]; // ilości
        for(int sum=0,p=0;p<val.length;)
        {
            mul[0]=(target-sum)/val[0]; // pierwszy - wyliczamy
            if(sum+mul[0]*val[0]==target) // trafiliśmy -> wyświetlamy
            {
                for(int i=0;i<val.length;++i) System.out.print(" "+val[i]+"*"+mul[i]);
                System.out.println();
            }
            for(p=1;p<val.length;++p)
            {
                if(sum<target)
                {
                    ++mul[p];
                    sum+=val[p];
                    break;
                }
                sum-=val[p]*mul[p];
                mul[p]=0;
            }
        }
    }
    public static void main (String[] args) throws java.lang.Exception
    {
        int val[]={2,5,10},target=100;
        calc(val,target);
    }
}
0

dziekuje za pomoc :)
ps "dzek69" jesli masz watpliwosci co do mojej osoby to z checia zamienie kilka slow z jednym z administratorow z forum na skype aby cie uszczesliwic.

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0