C++のグレイコード
グレイコードは、2つの連続する値が1ビットだけ異なる2進数システムであることがわかっています。コード内のビットの総数を表す非負の整数nがあるとします。グレイコードのシーケンスを印刷する必要があります。グレイコードシーケンスは0で始まる必要があります。したがって、入力が2の場合、結果は[0,1,3,2]になります。これは、0のグレイが00、1のグレイが01、2のグレイが11、3の灰色は10です。
これを解決するには、次の手順に従います-
- 1つのアレイを作成します
- 各数値のグレイコードを見つけて、それらをans配列に追加します。
- 灰色に変換するには、数値を取得し、数値を1ビット右にシフトした後にXORを実行します。
理解を深めるために、次の実装を見てみましょう-
#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> grayCode(int n) { vector <int> ans; for(int i =0; i<1<<n; i++){ ans.push_back(i^(i>>1)); } return ans; } }; main(){ Solution ob; print_vector(ob.grayCode(4)); }
入力
4
出力
[0, 1, 3, 2, 6, 7, 5, 4, 12, 13, 15, 14, 10, 11, 9, 8, ]
-
C++の対角トラバースII
numsというリストのリストがあるとすると、numsのすべての要素を対角線順に表示する必要があります。 したがって、入力が次のような場合 その場合、出力は[1,6,2,8,7,3,9,4,12,10,5,13,11,14,15,16]になります。 これを解決するには、次の手順に従います- 配列retを定義する 1つの2Dアレイvを定義する 初期化i:=0の場合、i
-
C++でプロセスを強制終了します
n個のプロセスがあるとします。ここでは、各プロセスにPIDまたはプロセスIDと呼ばれる一意のIDがあり、そのPPID(親プロセスID)もそこにあります。 各プロセスには1つの親プロセスしかありませんが、1つ以上の子プロセスがある場合があります。 これは木の構造のようなものです。 PPID =0のプロセスは1つだけです。これは、このプロセスに親プロセスがないことを意味します。すべてのPIDは一意の正の整数になります。 プロセスのリストを表すために2つの整数のリストを使用します。最初のリストには、各プロセスのPIDが含まれ、2番目のリストには対応するPPIDが含まれます。したがって、2つのリ