本を読み終えるまでの日数を数えるC++コード
n個の要素を持つ配列Aがあり、別の値tがあるとします。 i日目に、アマルはA[i]秒を仕事に費やします。自由時間に彼は本を読みます。本全体が完了するまでにt秒かかります。彼が本全体を読むのに何日かかるかを見つけなければなりません。
したがって、入力がA =[86400、86398]のような場合; t =2の場合、1日は86400秒で、初日は完全にブロックされるため、出力は2になります。 2日目に、彼は2秒で本を完成させます。
ステップ
これを解決するには、次の手順に従います-
cnt := 1 n := size of A for initialize i := 0, when i < n, update (increase i by 1), do: x := A[i] t := t - 86400 - x if t <= 0, then: return cnt (increase cnt by 1)
例
理解を深めるために、次の実装を見てみましょう-
#include <bits/stdc++.h> using namespace std; int solve(vector<int> A, int t){ int cnt = 1; int n = A.size(); for (int i = 0; i < n; i++){ int x = A[i]; t -= 86400 - x; if (t <= 0){ return cnt; } ++cnt; } } int main(){ vector<int> A = { 86400, 86398 }; int t = 2; cout << solve(A, t) << endl; }
入力
{ 86400, 86398 }, 2
出力
2
-
ロボットが最終位置に到達するまでのステップをカウントするC++コード
2つの座標(x1、y1)と(x2、y2)があるとします。ロボットがポイント(x1、y1)にいて、ポイント(x2、y2)に移動しようとしています。 1つのステップで、ロボットは1つのセルに向かって8つの隣接する座標に移動できます。最終的な位置に到達するために必要な最小限のステップ数を見つける必要があります。 したがって、入力がx1=3のような場合。 y1 =4; x2 =6; y2 =1;の場合、出力は3になります。 ステップ これを解決するには、次の手順に従います- return maximum of |x2 - x1| and |y2 - y1| 例 理解を深めるために、次の実装
-
C++で完全なツリーノードをカウントする
完全な二分木があるとすると、ノードの数を数える必要があります。したがって、ツリーが次のような場合- したがって、出力は6になります。 これを解決するために、次の手順に従います これは再帰的アプローチを使用します。このメソッド、countNodes()は引数としてルートを取ります。 hr:=0およびhl:=0 ルートとして2つのノードlとrを作成します lが空でない間 hlを1増やします l:=lの左側 rが空でない間 r:=rの権利 時間を1増やします hl =hrの場合、(2 ^ hl)–1を返します return 1 + countNodes(ルートの左側)