кодесурса
«C

Упражнения C: Подсчитайте все различные пары для определенной разницы

script1adsense2code
script1adsense3code

C Array: Упражнение-80 с раствором

Напишите программу на C для подсчета всех различных пар для определенной разницы.

Пример решения:

Код C:

#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#define MAX 1000000
int cmpfunc (const void * arr1, const void * b)
{
   return ( *(int*)arr1 - *(int*)b );
}
int main() 
{
    int n,k;
    int ctr = 0;
    int i;
    int arr1[] = {5, 2, 3, 7, 6, 4, 9, 8};
	n = sizeof(arr1)/sizeof(arr1[0]);
	k=5;
 //------------- print original array ------------------	
	printf("The given array is:  \n");
	for(i = 0; i < n; i++)
		{
			printf("%d  ", arr1[i]);
		}
	printf("\n");
//------------------------------------------------------ 	
    qsort(arr1, n, sizeof(int), cmpfunc);
    int l = 0;
    int r = 0;
	printf("The distinct pairs for difference %d are: ",k);    
    while(r < n)
    {
         if(arr1[r] - arr1[l] == k)
         {
		 printf("[%d, %d] ",arr1[r],arr1[l]);
              ctr++;
              l++;
              r++;
        }
         else if(arr1[r] - arr1[l] > k)
              l++;
         else
              r++;
    }
    printf("\nNumber of distinct pairs for difference %d are: %d",k,ctr);
    return 0;
}

Пример вывода:

 Данный массив:  
5 2 3 7 6 4 9 8  
Различными парами для разности 5 являются: [7, 2] [8, 3] [9, 4] 
Количество различных пар для разницы 5: 3 

Блок - схема:

«Блок-схема:

Редактор кода программирования C:

Улучшите этот пример решения и опубликуйте свой код через Disqus.

Previous: написать программу на C для сортировки n чисел в диапазоне от 0 до n ^ 2.
Далее: диапазон массива равен [0..n-1], а элементы находятся в диапазоне [0..k-1] и k <= n.

Каков уровень сложности этого упражнения?

Новый контент: Composer: менеджер зависимостей для PHP , R программирования


script1adsense4code
script1adsense5code
disqus2code
script1adsense6code
script1adsense7code
script1adsense8code
buysellads2code