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

Cのm要素の2つのサブセット間の最大差


タスクは、配列内のm個の要素の合計間の最大の差を見つけることです。配列と数値mがあるとすると、最初に最大のm個の数値の合計を見つけ、次に最小のm個の数値の合計を減算して最大の差を求めます。したがって、主なことは、合計が最大で合計が最小のm個の数値の2つのサブセットを見つけることです。

例を使用して、私たちがしなければならないことを理解しましょう-

入力

arr = {1,2,3,4,5} ; m=3

出力

Maximum difference here is : 6

説明 −ここで、最大の3つの数値は3,4,5で、合計は12です。最小の3つの数値は1,2,3で、合計は6です。したがって、最大または最大の差は12-6、つまり6です。

入力

arr = {10,13,22,8,16,14}; m=4

出力

Maximum difference here is : 20

説明 −ここで、最高の4つの数字は22,16,14,13で、合計は65です。最低の4つの数字は8,10,13,14で、合計は45です。したがって、最大または最大の差は65-45、つまり20です。

以下のプログラムで使用されるアプローチは次のとおりです

  • セットを作成するために入力配列arr[]と数mを取ります

  • find_diff()関数では、入力配列とその長さを渡し、m個の要素のセットの合計の最大差を返します。

  • ここでは、最初に配列arr[]の要素を並べ替えます。

  • 次に、最初のm個と最後のm個の要素の合計を求めます。これらは最小m個と最大m個のarr[]であるためです。

  • 最後に、差額を返します。

  • 注-sort(arr []、int)は、ソートされた配列を返すと想定されています。

#include<stdio.h>
//create function to calculate maximum difference between sum of highest and lowest m elements of array
int find_diff(int arr[],int length,int m){
   //for sorting the array
   sort(arr,length);
   int maxsum=0, minsum=0;
   //calculate now max difference between two subsets of m elements
   for(int i=0;i<m;i++){
      minsum+=arr[i];
      maxsum+=arr[length-i-1];
   }
   return(maxsum-minsum);
}
// Driver program
int main(){
   int arr[]={1,1,2,3,5,7,1};
   int m=3;
   cout << find_diff(arr,7,m);
   return 0;
}

出力

上記のコードを実行すると、次の出力が得られます-

12

  1. 2つのDateTime間のミリ秒単位のC#の差

    以下が私たちの日付の2つのDateTimeオブジェクトであるとしましょう。 DateTime date1 = new DateTime(2018, 8, 11, 08, 15, 20); DateTime date2 = new DateTime(2018, 8, 11, 11, 14, 25); TimeSpanを使用して、これら両方の日付の違いを見つけます。 TimeSpan ts = date2 - date1; ミリ秒を取得するには、次のプロパティを使用します- ts.TotalMilliseconds 完全なコードを見てみましょう。 例 using System; using

  2. Pythonの2つのリストから2つの要素間の最小の違いを見つけるプログラム

    L1とL2の2つのリストがあるとすると、L1の数値とL2の数値の差が最も小さいものを見つける必要があります。 したがって、入力がL1 =[2、7、4]、L2 =[16、10、11]の場合、最小の差は10-7 =3であるため、出力は3になります。 これを解決するには、次の手順に従います- リストL1を並べ替え、リストL2を並べ替えます ans:=無限大 i:=0、j:=0 i