Memoization(not memorization) is a programming technique often used in dynamic programming. In essence, it just means having your program remember previous calculations and reuse those results in similar calculations later. It's a rather simple technique and yet it can make a huge difference in efficiency.
Let's the common task of calculating Fibonacci numbers. Say that I need to output the first n Fibonacci numbers. Well the simplest approach is to use tree recursion:
double fibonacci(int n)
{
if (n < 2)
{
return n;
}
else
{
return fibonacci(n - 2) + fibonacci(n - 1);
}
}
Now although this solution is the easiest to formulate it is extremely inefficient. The reason why it is so inefficient, is because there is a huge amount of recalculation involved. Take fibonacci(6), which is to take the 6th term of Fibonacci. If we trace the recursive calls, we will see a structure similar to this:
f(6)
f(5) + f(4)
f(4) + f(3) + f(3) + f(2)
f(3) + f(2) + f(2) + f(1) +... View In Full
In C, if you ever wanted to use strings, you would need to use a null-terminated array of characters. It was ugly, unsophisticated, and very susceptible to buffer overflows. C++ and it's STL gives you a much better solution; the string class.
Making a string is easy:
#include <string>
using namespace std;
string firstName("Oleksi");
string lastName;
lastName = "Derkatch";
Simple, as you can see. Strings keep track of their own size using the length() member:
string name("Oleksi");
name.length(); //Returns 6
name = "ma";
name.length(); //Returns 2
As you can see, changing the string value is simple as well. If you need to access individual characters of the string, you can treat the string as a character array in C. That is, you can easily do something like this:
string name("Jack");
for (int i(0); i < name.length(); ++i)
{
cout << name ;
}
C++ overloads the extracti... View In Full
The C++ STL library defines a vector class which gives you a pre-made generic vector. You can use it in the same way as you would a regular array, only a vector is safer to use and more sophisticated.
Creating one is simple:
#include <vector>
using namespace std;
vector<int> myVector;
You have now created a vector to hold integers. One of the best things about vectors is that memory for them is dynamically allocated. This is perfect for occasions when you do not know the exact number of elements you may need at compile time. Here's an example:
#include <vector>
using namespace std;
vector<int> myVector;
myVector.push_back(42);
myVector.push_back(34);
Note that I never explicitly tell the compiler how large my vector is. At this point in time, it contains 2 elements, but I can easily add another element to the back of the vector. If I need to get the number of elements in the vector, I can simply use the size()... View In Full
This program was designed to solve the following programming challenge from osix.net
"Sometimes there is no way to solve certain problems except for brute forcing the answer. This is just such a ca
This is a program I made to solve the following challenge:
"Given the a list of coin amounts, and a final amount, your program should calculate how many different ways there are to make change for th
This program allows you to change your desktop background by selecting a random image from a folder you specify. If you want, place this program in your start-up folder and it will change your backgro
Well I'm in last part of GCSE. I got the book on Perl. And I'm working on my site. Perl is a brilliant language, I have picked it up much quicker than anything else.
I actually like PHP, probably because i'm new to it.
I'm not sure really...i do like web programming but i may lean towards software programming...using ruby...i found some really good jobs for software programming.
Well don't start it for a couple of months yet... and i'll start it the same time you do and we can learn it at the same time :-P see who learns it the best :-P lol
Could even hold competitions, we'l both make an application with the same spec... and i'll show both in the forums and people can say whos application they prefer! lol