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