← Back to List

2294번: 동전 2 ↗

Solutions

C++14
454 B | 454 chars
#include <iostream>
using namespace std;
int ar[100100],coin[120],n,k;
int f(int x)
{
	if(ar[x])return ar[x];
	else if(x==0) return ar[x]=0;
	else
	{
		int Min=999999;
		for(int y=0; y<n; y++)
		{
			if(x-coin[y]>=0)
			{
				int z=f(x-coin[y])+1;
				if(z<Min) Min=z;
			}
		}
		return ar[x]=Min;
	}
}
int main()
{
	scanf("%d %d",&n,&k);
	for(int x=0; x<n; x++)scanf("%d",&coin[x]);
	
	int ww=f(k);
	if(ww!=999999) printf("%d",ww);
	else printf("-1");
}