diff --git a/coin_change/solutions/coin_change_solution.py b/coin_change/solutions/coin_change_solution.py new file mode 100644 index 0000000..fef052f --- /dev/null +++ b/coin_change/solutions/coin_change_solution.py @@ -0,0 +1,39 @@ +import cPickle as pickle +import sys + + +def memoize(func): + cache = {} + + def wrapper(*args, **kwargs): + key = pickle.dumps(args) + pickle.dumps(kwargs) + if key not in cache: + cache[key] = func(*args, **kwargs) + return cache[key] + return wrapper + + +@memoize +def solve(coins, amount): + if len(coins) == 0: + return 0 + if len(coins) == 1: + return 1 if amount % coins[0] == 0 else 0 + ways = 0 + current_coin, rest_of_coins = coins[0], coins[1:] + i = 0 + while amount - i * current_coin >= 0: + ways += solve(rest_of_coins, amount - i * current_coin) + i += 1 + return ways + + +def main(): + coins = sorted(map(int, sys.stdin.readline().strip().split(",")), + reverse=True) + amount = int(sys.stdin.readline().strip()) + ways = solve(coins, amount) + print(ways) + +if __name__ == "__main__": + main() diff --git a/tree_zig_zag/.gitignore b/tree_zig_zag/.gitignore index b69b36f..5179ea3 100644 --- a/tree_zig_zag/.gitignore +++ b/tree_zig_zag/.gitignore @@ -1 +1,2 @@ -_doc \ No newline at end of file +_doc +solutions/tree_zig_zag \ No newline at end of file diff --git a/tree_zig_zag/solutions/tree_zig_zag.cpp b/tree_zig_zag/solutions/tree_zig_zag.cpp new file mode 100644 index 0000000..871251e --- /dev/null +++ b/tree_zig_zag/solutions/tree_zig_zag.cpp @@ -0,0 +1,45 @@ +#include +#include +#include +#include + + +class Node { +public: + Node() : value(-1), left(NULL), right(NULL) { + } + + Node(int value) : left(NULL), right(NULL) { + this->value = value; + } + + Node* getLeft() { return left; } + void setLeft(Node* node) { left = node; } + Node* getRight() { return right; } + void setRight(Node* node) { right = node; } + int getValue() { return value; } + +private: + int value; + Node* left; + Node* right; +}; + + +int main() { + std::string tmp; + while(std::getline(std::cin, tmp)) { + std::vector nums; + std::istringstream ss(tmp); + int ti; + while (ss >> ti) + nums.push_back(ti); + + for (std::vector::const_iterator iter = nums.begin(); + iter != nums.end(); ++iter) + { + std::cout << *iter << " "; + } + std::cout << std::endl; + } +}