C++でのロシアの人形の封筒
いくつかのエンベロープがあると仮定します。これらのエンベロープには、高さと幅の値がペアで含まれています。 2番目のエンベロープの高さと幅の両方が最初のエンベロープの高さと幅よりも小さい場合は、1つのエンベロープを別のエンベロープに入れることができます。それで、私たちが他の中に入れることができるエンベロープの最大数は何でしょう。したがって、入力が[[5,5]、[6,4]、[6,8]、[2,3]]の場合、最小のエンベロープは[2,3]であるため、出力は3になります。次に[5,5]、次に[6,8]。
これを解決するには、次の手順に従います-
- 高さに基づいて配列vを並べ替えます。高さが同じ場合は、幅と比較します
- vのサイズが0と同じ場合、-
- 0を返す
- 配列retを定義する
- iを初期化する場合:=0、i
- 配列の定義temp=v [i]
- x:=temp [1]
- 低:=0、高:=retのサイズ、curr:=0
- 低い<=高い間、-
- を実行します
- 中:=低+(高-低)/ 2
- ret [mid]
- curr:=mid + 1
- 低:=中+1
- それ以外の場合
- 高:=中-1
- 次の部分を無視し、次の反復にスキップします
- retの最後にtemp[1]を挿入
- ret [curr]:=temp [1]
理解を深めるために、次の実装を見てみましょう-
例
#include <bits/stdc++.h> using namespace std; class Solution { public: static bool cmp(vector <int> a, vector <int> b){ if(a[0] == b[0])return a[1] > b[1]; return a[0] < b[0]; } int maxEnvelopes(vector<vector<int>>& v) { sort(v.begin(), v.end(), cmp); if(v.size() == 0)return 0; vector <int> ret; for(int i = 0; i < v.size(); i++){ vector <int> temp = v[i]; int x = temp[1]; int low = 0; int high = ret.size() -1; int curr = 0; while(low <= high){ int mid = low + (high - low) / 2; if(ret[mid]<temp[1]){ curr = mid + 1; low = mid + 1; }else{ high = mid - 1; } } if(curr < 0) continue; if(curr >= (int)ret.size()){ ret.push_back(temp[1]);; }else{ ret[curr] = temp[1]; } } return ret.size(); } }; main(){ Solution ob; vector<vector<int>> v = {{5,5}, {6,4}, {6,8}, {2,3}}; cout << (ob.maxEnvelopes(v)); }
入力
{{5,5}, {6,4}, {6,8}, {2,3}}
出力
3
-
C++でプロセスを強制終了します
n個のプロセスがあるとします。ここでは、各プロセスにPIDまたはプロセスIDと呼ばれる一意のIDがあり、そのPPID(親プロセスID)もそこにあります。 各プロセスには1つの親プロセスしかありませんが、1つ以上の子プロセスがある場合があります。 これは木の構造のようなものです。 PPID =0のプロセスは1つだけです。これは、このプロセスに親プロセスがないことを意味します。すべてのPIDは一意の正の整数になります。 プロセスのリストを表すために2つの整数のリストを使用します。最初のリストには、各プロセスのPIDが含まれ、2番目のリストには対応するPPIDが含まれます。したがって、2つのリ
-
C++でのリスのシミュレーション
木、リス、そしていくつかのナッツがあります。位置は、2Dグリッドのセルで表されます。あなたの目標は、リスがすべてのナッツを集めて、それらを1つずつ木の下に置くための最小距離を見つけることです。リスは一度に最大で1つのナットしかとることができず、隣接するセルに向かって上下左右の4つの方向に移動できます。距離は移動回数で表されます。 したがって、入力が高さ:5幅:7木の位置:[2,2]リス:[4,4]ナッツ:[[3,0]、[2,5]]の場合、出力は12になります。 、 これを解決するには、次の手順に従います- 関数calc()を定義します。これには、x1、y1、x2、y2、が必要で