Read twice please complete and full answer in order to give
Read twice please, complete and full answer in order to give full credit,thanks.
You are given a set of n integers. Give an O(n 2 ) algorithm to decide if there exist three numbers a, b and c in the set such that a + b = c (Hint: sort the numbers first).
Solution
void swap(int *firstElement, int *secondElement)
{
int temp = *firstElement;
*firstElement = *secondElement;
*secondElement = temp;
}
int _tmain(int argc, _TCHAR* argv[])
{
int arrays[] = {1, 3, 4, 15, 7, 20, 27, 0, 2, 1, 2, 0};
int n = sizeof (arrays)/sizeof arrays[0];
for (int i = 0; i < n; i++)
{
for (int j = 0; j < n-i-1; j++)
{
if (arrays[j] > arrays[j+1])
{
swap(&arrays[j], &arrays[j+1]);
}
}
}
for (int i = 0; i < 12; i++)
{
int a = arrays[i];
//int k = i + 1;
for(int j = ++i; j < 12; j++)
{
int b = arrays[j];
if (a + b == arrays[j + 1])
{
std::cout<<\"a = \"<<a<<\" b = \"<<b<<\" and c = \"<<arrays[j + 1]<<std::endl;
}
std::cout<<std::endl;
}
}
getchar();
return 0;
}
