Friday, December 19, 2014

Odd Element & Different Element in c pgm



Find the Odd Element given an Array with only two Different Element

#include 
#include 
void printodd(int array[], int size)
{
    int xor2 = array[0];
    int set;
    int i;
    int n = size - 2;
    int x = 0, y = 0;
 
   
    for (i = 1; i < size; i++)
        xor2 = xor2 ^ array[i]; 
    
    set = xor2 & ~(xor2 - 1);
    
    for (i = 0; i < size; i++)
    {
        
        if (array[i] & set)
        x = x ^ array[i];
        else
        y = y ^ array[i];
    }
    printf("\n The odd elements are %d & %d ", x, y);
}
 
int main()
{
    int array[] = {10, 3, 2, 10, 2, 8, 8, 7};
    int arr_size = sizeof(array) / sizeof(array[0]);
    printodd(array, arr_size);
    getchar();
    return 0;
 getch();
}

Output
 
            The odd elements are 7 & 3

 

Find the Sum of Contiguous Subarray within a 1 – D Array of Numbers which has the Largest Sum

         #include 
#include 
#include 
 
int maxSubArraySum(int a[], int size, int *begin, int *end)
{
    int max_so_far = 0, max_end = 0;
    int i, current_index = 0;
 
    for (i = 0; i < size; i++)
    {
        max_end = max_end + a[i];
        if (max_end <= 0)
        {
            max_end = 0;
            current_index = i + 1;
        }
        else if (max_so_far < max_end)
        {
            max_so_far = max_end;
            *begin = current_index;
            *end = i;
        }
   }
   return max_so_far;
}
 
int main()
{
    int arr[] = {10, -2, 15, 9, -8, 12, 20, -5};
    int start = 0, end = 0;
    int size = sizeof(arr) / sizeof(arr[0]);
 
    printf(" The max sum is %d", maxSubArraySum(arr, size, &start, &end));
    printf(" The begin and End are %d & %d", start, end);
    getchar();
    return 0;
    getch();
   }

Output
 
             The max sum is 56 The begin and End are 0 & 6


No comments:

Post a Comment