[C] Problem wydawania reszty zachłannie

robertos18
Użytkownik
Użytkownik
Posty: 423
Rejestracja: 6 paź 2014, o 20:03
Płeć: Mężczyzna
Lokalizacja: Torun
Podziękował: 127 razy
Pomógł: 2 razy

[C] Problem wydawania reszty zachłannie

Post autor: robertos18 »

Napisz program znajdujący minimalną liczbę banknotów/monet (z ustalonej puli nominałów) potrzebnych do wypłacenia danej kwoty. Użyj metody zachłannej. Zakładamy, że liczba banknotów/monet o ustalonych nominałach jest nieograniczona.

Kod: Zaznacz cały

#include <stdio.h>

int main()
{
	int q=0;
	int x=0;
	int y,l,n,a,k,j,b,i,temp;
    int T[l];
    int tab[20];
	scanf("%d/n",&a);
	scanf("%d/n",&l);
    for(i=0;i<l;i++) {scanf("%d",&T[i]);}
	 for(b=0;b<l-1;b++)
	 {
	 	for(j=0;j<l-1;j++)
	 	{
	 		if(T[j]>T[j+1])
	 		{
	 			temp=T[j+1];
	 			T[j+1]=T[j];
	 			T[j]=temp;
			 }
		 }
	 }
    while(a>T[0])
    {
    	if(T[l-1]<=a)
		{
		tab[x]=T[l-1];
		a=a-T[l-1];
		q++;
		x++;
		}
		else {l=l-1;}
	}

    printf("%d",q);
    for(y=0;y<=x;y++) {printf("%d",tab[y]);}

	return 0;
}

Prosiłbym o rady
Ostatnio zmieniony 13 kwie 2015, o 09:05 przez Afish, łącznie zmieniany 1 raz.
Powód: Staraj się lepiej dobierać nazwy tematów, tak by wskazywały o czym jest treść zadania.
Gouranga
Użytkownik
Użytkownik
Posty: 1584
Rejestracja: 16 maja 2013, o 17:56
Płeć: Mężczyzna
Lokalizacja: Trójmiasto
Podziękował: 11 razy
Pomógł: 245 razy

[C] Problem wydawania reszty zachłannie

Post autor: Gouranga »

zacznijmy od tego fragmentu:

Kod: Zaznacz cały

int main()
{
   int q=0;
   int x=0;
   int y,l,n,a,k,j,b,i,temp;
    int T[l];
    int tab[20];
1. nie int main() tylko int main(void) jeśli nie używasz zewnętrznych argumentów (zaraz ktoś powie, że to bez znaczenia, ale jestem za wyrabianiem dobrych nawyków od początku).
2. nigdy nie będziesz pracował sam jako informatyk i zawsze ktoś będzie czytał twój kod. z takimi nazwami zmiennych daleko nie zajdziesz.
ODPOWIEDZ