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

C++の美しいアレンジメントII


2つの整数nとkがあるとすると、1からnの範囲のn個の異なる正の整数を含み、次の規則に従うリストを作成する必要があります-

リストが[a1、a2、a3、...、an]であるとすると、リスト[| a1 --a2 |、| a2 --a3 |、| a3 --a4 |、...、| an-1-an |]は正確にk個の一意の整数を持っています。したがって、複数の回答がある場合は、それらのいずれかを表示してください。

入力がn=3およびk=2のような場合、結果は[1,3,2]になります。 [1,3,2]には、1から3の範囲の3つの異なる正の整数があり、[2,1]には、正確に2つの異なる整数1と2があります。

これを解決するには、次の手順に従います-

  • 配列retを定義する
  • i:=1、j:=nの場合、i <=j
      かどうかを確認します
    • k> 1の場合、
      • kが奇数の場合は、iを挿入します。それ以外の場合は、jをretに挿入します
      • kが奇数の場合は、iを1増やし、それ以外の場合はjを1減らします
      • kを1減らします
    • それ以外の場合は、iをresに挿入し、iを1増やします
  • return ret

理解を深めるために、次の実装を見てみましょう-

#include <bits/stdc++.h>
using namespace std;
void print_vector(vector<int> v){
   cout << "[";
   for(int i = 0; i<v.size(); i++){
      cout << v[i] << ", ";
   }
   cout << "]"<<endl;
}
class Solution {
   public:
   vector<int> constructArray(int n, int k) {
      vector <int> ret;
      for(int i = 1, j = n; i <= j; ){
         if(k > 1){
            ret.push_back(k % 2 ? i : j);
            if(k % 2 == 1){
               i++;
            }else j--;
            k--;
         } else {
            ret.push_back(i++);
        }
      }
      return ret;
   }
};
main(){
   Solution ob;
   print_vector(ob.constructArray(3, 2));
}

入力

3
2

出力

[3, 1, 2, ]

  1. C++の識別子

    C ++識別子は、変数、関数、クラス、モジュール、またはその他のユーザー定義アイテムを識別するために使用される名前です。識別子は、文字AからZまたはaからzまたはアンダースコア(_)で始まり、その後に0個以上の文字、アンダースコア、および数字(0から9)が続きます。 C ++では、識別子内に@、$、%などの句読文字を使用できません。 C ++は、大文字と小文字を区別するプログラミング言語です。したがって、Manpowerとmanpowerは、C++では2つの異なる識別子です。 受け入れ可能な識別子の例を次に示します- mohd Piyush abc move_na

  2. LinuxでのC++の最高のIDEは何ですか?

    大きなプロジェクトは、単なるテキストエディタでは管理が困難です。このような場合にIDEを使用すると、生産性が向上し、フラストレーションが軽減される可能性があります。 IDEにはさまざまな種類があり、ニーズに合ったものを選択する必要があります。 Linux上のC++に最適なIDEは1つではありません。ツールは賢く選ぶ必要があります。 Linux用の人気のあるIMOの最高のIDEのリストは次のとおりです。 C /C++開発用のNetbeans- Netbeansは、C /C++および他の多くのプログラミング言語向けの無料のオープンソースで人気のあるクロスプラットフォームIDEです。コミュニテ