Pages

Wednesday, February 2, 2011

Thinking Recursively



List of some of the best resources to learn Recursion, Backtracking and most importantly to start thinking recursively.

1. Recursion Basics, Solving Problems recursively, raise to the power example and mechanics of what is going to happen, Choosing a subset
Video Lecture

2. Thinking Recursively, Permute Code, More Examples, Tree of Recursive calls
Video Lecture

3. Testing with different cases, subsets, subset stratergy, Exhaustive Recursion, Recursive BackTracking, Anagram Finder, N Queens
Video Lecture

4. Backtracking Pseudocode, Sudoku Solver, Sudoku Code, Cryptarithmetic
Video Lecture

Reference: http://see.stanford.edu/see/courseInfo.aspx?coll=11f4f422-5670-4b4c-889c-008262e09e4e (Stanford Engineering Everywhere)




Tuesday, February 1, 2011

Print Permutations of a String

void permutation(string, string);
int main() {
permutation("","ABC");
}
void permutation(string sofar, string remaining) {
if (remaining=="") {
//Print the string sofar<<"\n";< p="">
return;
}
for (int i=0;i
permutation(sofar+remaining[i],remaining.substr(0,i)+remaining.substr(i+1));
}
}

Recursive Approach for Reversing a String


Recursive Approach for Reversing a String

Simple Approach: Take the last character + reverse(rest of the string)
Base Case: When we encounter a single character, return that character.

string reverse(string str) {
if (str.length()==1)
return str;
return str[str.length()-1]+reverse(str.substr(0,str.length()-1));
}