csum.awk 538 B

12345678910111213141516171819202122232425262728293031323334
  1. BEGIN {
  2. coins[1] = 1;
  3. coins[2] = 2;
  4. coins[3] = 5;
  5. coins[4] = 10;
  6. coins[5] = 20;
  7. coins[6] = 50;
  8. coins[7] = 100;
  9. coins[8] = 200;
  10. }
  11. function num_paths(startsum, lastcoin, paths) {
  12. if (startsum == 250) {
  13. return 1;
  14. }
  15. paths = 0;
  16. for (i in coins) {
  17. if (lastcoin >= coins[i] && startsum <= 250-coins[i]) {
  18. paths += num_paths(startsum + coins[i], coins[i]);
  19. }
  20. }
  21. return paths;
  22. }
  23. BEGIN {
  24. a = ARGV[1];
  25. b = ARGV[2];
  26. print num_paths(a, b);
  27. }