RosettaCodeData/Task/Count-the-coins/MATLAB/count-the-coins.m
2015-11-18 06:14:39 +00:00

30 lines
1.1 KiB
Matlab
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

%% Count_The_Coins
clear;close all;clc;
tic
for i = 1:2 % 1st loop is main challenge 2nd loop is optional challenge
if (i == 1)
amount = 100; % Matlab indexes from 1 not 0, so we need to add 1 to our target value
amount = amount + 1;
coins = [1 5 10 25]; % Value of coins we can use
else
amount = 100*1000; % Matlab indexes from 1 not 0, so we need to add 1 to our target value
amount = amount + 1;
coins = [1 5 10 25 50 100]; % Value of coins we can use
end % End if
ways = zeros(1,amount); % Preallocating for speed
ways(1) = 1; % First solution is 1
% Solves from smallest sub problem to largest (bottom up approach of dynamic programming).
for j = 1:length(coins)
for K = coins(j)+1:amount
ways(K) = ways(K) + ways(K-coins(j));
end % End for
end % End for
if (i == 1)
fprintf(Main Challenge: %d \n', ways(amount));
else
fprintf(Bonus Challenge: %d \n', ways(amount));
end % End if
end % End for
toc