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

C +=+の昇順で奇数と偶数の値を交互に並べ替えます


正の数と負の数の両方を含む整数型の配列、たとえば、任意のサイズのarr[]が与えられます。タスクは、配列の最下位の要素が奇数の場合に、配列の要素が奇数の1番目と偶数番目の方法で再配置されるように配列を再配置することです。配列の最下位の要素が偶数の場合、配列の要素は偶数の1番目と奇数の2番目の方法で再配置され、偶数/奇数の要素の数が奇数/偶数の要素の数よりも多い場合は、0と結果を印刷します。

このためのさまざまな入出力シナリオを見てみましょう-

入力 − int arr [] ={1、1、2、2、5、4}

出力 −昇順での交互の方法での奇数と偶数の値の再配置は次のとおりです。12 1 2 5 4.

説明 −整数型の配列が与えられます。次に、配列内の最小の要素、つまり1が奇数の値であるかどうかを確認します。これにより、要素は奇数の1番目と7番目の方法で配置されます。つまり、1 2 1 254が最終出力になります。

入力 − int arr [] ={6、3、2、8、10、4}

出力 −昇順での交互の方法での奇数と偶数の値の再配置は次のとおりです。23 4 0 6 0

説明 −整数型の配列が与えられます。次に、配列内の最小の要素、つまり2が偶数の値であるかどうかを確認します。

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

  • 整数型要素の配列を入力し、配列のサイズを計算します。

  • 配列と配列のサイズをsort関数に渡すことにより、C++STLのsortメソッドを使用して配列をソートします。

  • 整数変数を宣言し、関数Rearrangement(arr、size)

    を呼び出して設定します。
  • 関数Rearrangement(arr、size)の内部

    • 整数型データを格納するベクトルの型として、「vec_1」と「vec_2」の2つの変数を作成します。

    • 整数型の一時変数をtempとして作成し、0に設定します。

    • bool型の別の変数をチェックとして宣言し、値をFALSEに設定します。

    • iがサイズより小さくなるまでiから0までループFORを開始します。ループ内で、IF arr [i]%2 =0を確認してから、arr[i]をvec_1にプッシュします。それ以外の場合は、arr[i]をvec_2にプッシュします。

    • 整数変数をiおよびjとして0として宣言します。IFarr[0]%2 =0をチェックしてから、チェックをtrueに設定します。

    • サイズよりも小さい温度で開始します。ループ内で、IF check =trueをチェックしてから、arr[temp++]をvec_1[i++]に設定し、checkを!checkに設定します。それ以外の場合は、arr[temp++]をvec_2[j++]に設定し、checkを!checkに設定します。

  • 結果を印刷します。

#include <bits/stdc++.h>
using namespace std;
void Rearrangement(int arr[], int size){
   vector<int> vec_1, vec_2;
   int temp = 0;
   bool check = false;
   for(int i = 0; i < size; i++){
      if(arr[i] % 2 == 0){
         vec_1.push_back(arr[i]);
      }
      else{
         vec_2.push_back(arr[i]);
      }
   }
   int i = 0;
   int j = 0;
   if(arr[0] % 2 == 0){
      check = true;
   }
   while(temp < size){
      if(check == true){
         arr[temp++] = vec_1[i++];
         check = !check;
      }
      else{
         arr[temp++] = vec_2[j++];
         check = !check;
      }
   }
}
int main(){
   int arr[] = { 1, 1, 2, 2, 5, 4 };
   int size = sizeof(arr) / sizeof(int);
   //sort an array
   sort(arr, arr + size);
   cout<<"Rearrangement of Odd and Even values in Alternate Fashion in Ascending Order is: ";
   Rearrangement(arr, size);
   for(int i = 0; i < size; i++){
      cout << arr[i] << " ";
   }
   return 0;
}

出力

上記のコードを実行すると、次の出力が生成されます

Rearrangement of Odd and Even values in Alternate Fashion in Ascending Order is: 1 2 1 2 5 4

  1. Pythonで0と1が交互になっているバイナリ文字列を再配置できるかどうかを確認します

    長さが2以上のバイナリ文字列sがあるとします。 0と1が交互になるようにsを再配置できるかどうかを確認する必要があります。 したがって、入力がs =1000111の場合、sから 1010101を形成できるため、出力はTrueになります。 これを解決するには、次の手順に従います- one_count:=バイナリ文字列の1のカウント zero_count:=バイナリ文字列の0のカウント sのサイズが偶数の場合、 one_countがzero_countと同じ場合はtrueを返し、それ以外の場合はfalseを返します | one_count--zero_count|の場合にtru

  2. Pythonで除数の数が偶数か奇数かを確認します

    数がnであるとすると、除数の総数が偶数または奇数であることを確認する必要があります。 したがって、入力がn =75の場合、除数が[1、3、5、15、25、75]であるため、出力は偶数になります。 これを解決するために、1つのシンプルで効率的なアプローチに従います。数が完全な平方である場合、それだけが奇数の約数を持つことを観察しました。したがって、数が完全な平方でない場合は、除数さえあります。したがって、ここでは、数値が完全な平方であるかどうかのみを確認し、これに基づいて、出力として「奇数」または「偶数」を返すことができます。 これを解決するには、次の手順に従います- n <1がゼロ以