Cプログラミング
 Computer >> コンピューター >  >> プログラミング >> Cプログラミング

C /C++を使用した配列操作と合計


ここでは、1つの配列が与えられたと仮定して、1つの問題が発生します。 n個の要素があります。別の値Sも与えられます。配列内で要素Kを見つける必要があります。これにより、Kより大きいすべての要素がKと等しくなると、最終的な配列のすべての要素の合計がSに等しくなります。それが不可能な場合は、次に-1を返します。

要素が{12、6、3、7、8}で、合計値が15で、出力が3であるとします。最終的な配列は{3、3、3、3、3}、配列要素の合計はS =15

アルゴリズム

getVal(arr、n、S)

Begin
   sort arr as increasing order
   sum := 0
   for i in range 0 to n-1, do
      if sum + (arr[i] * (n - i)) is same as S, then
         return arr[i]
      end if
      sum := sum + arr[i]
   done
   return -1
End
の場合は終了

#include <iostream>
#include <algorithm>
using namespace std;
int getVal(int arr[], int n, int S) {
   sort(arr, arr + n);
   int sum = 0;
   for (int i = 0; i < n; i++) {
      if (sum + (arr[i] * (n - i)) == S) //if current value is satisfying, then return arr[i]
         return arr[i];
      sum += arr[i];
   }
   return -1;
}
int main() {
   int S = 15;
   int arr[] = { 12, 3, 6, 7, 8 };
   int n = sizeof(arr) / sizeof(arr[0]);
   cout << getVal(arr, n, S);
}

出力

3

  1. C /C++でのpthreadを使用したマトリックスの加算と減算

    ここでは、マルチスレッド環境を使用して行列の加算と減算を実行する方法を説明します。 pthreadは、CまたはC++で複数のスレッドを同時に実行するために使用されます。 2つの行列AとBがあります。各行列の次数は(m x n)です。各スレッドは各行を取得し、加算または減算を実行します。したがって、m行の場合、m個の異なるスレッドがあります。 例 #include<iostream> #include <pthread.h> #include <cstdlib> #include <cstdint> #define CORE 3 #define

  2. マージソートを使用して配列内の反転をカウントするC/C ++プログラム?

    指定された配列をソートするために発生する反転の数は、反転数と呼ばれます。反転問題は、マージソートアルゴリズムを使用して解決できる古典的な問題です。この問題では、v左側にある要素よりも多くのすべての要素をカウントし、そのカウントを出力に追加します。 ThisLogicは、マージソートのマージ関数内で実行されます。 トピックをよりよく理解するために、例を見てみましょう。マージプロセスに関係する2つのサブアレイについて考えてみましょう- Input: arr[] = { 1, 9, 6, 4, 5} Output: Inversion count is 5 説明