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

C++で合計がnである連続リストの数をカウントするプログラム


数値がnであるとすると、合計がnになる正の連続値のリストの数を見つける必要があります。

したがって、入力がn =15の場合、出力は4になります。可能なリストは、[1、2、3、4、5]、[4、5、6]、[7、8]、および[15]。

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

  • 開始:=1、終了:=1、x:=(n + 1)
  • 合計:=0
  • 終了<=xの場合、次のようにします。
    • 合計:=合計+終了
    • sum> =nの場合、次のようにします。
      • 合計がnと同じ場合、次のようになります。
        • (カウントを1つ増やします)
      • sum:=sum-開始
      • (1から始めて増やします)
    • (終了を1増やします)
  • 返品数+1

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

#include
using namespace std;

int solve(int n) {
   int begin=1,end=1,x=(n+1)/2,count=0;
   long int sum=0;
   while(end <= x){
      sum += end;
      while(sum >= n){
         if(sum == n)
            count++;
         sum -= begin;
         begin++;
      }
      end++;
   }
   return count+1;
}
main(){
   cout << (solve(15));
}

入力

15

出力

4

  1. Xとの合計がC++のフィボナッチ数であるノードをカウントします

    ノードの重みを数値として持つ二分木を指定します。目標は、その数がフィボナッチ数であるような重みを持つノードの数を見つけることです。フィボナッチ数列の数は次のとおりです。0、1、1、2、3、5、8、13…。n番目の数はの合計です。 (n-1)番目と(n-2)番目。重みが13の場合、それはフィボナッチ数であるため、ノードがカウントされます。 例 入力 temp=1。値を入力した後に作成されるツリーを以下に示します- 出力 Count the nodes whose sum with X is a Fibonacci number are: 3 説明 we are given with

  2. Pythonで合計がkであるパスの数をカウントするプログラム

    二分木と別の値kがあるとすると、合計がkになるサブ子パスへの一意のノードの数を見つける必要があります。 したがって、入力が次のような場合 k =5の場合、パスは[2、3]と[1、4] であるため、出力は2になります。 これを解決するには、次の手順に従います- count:=マップは最初にキー0の値1を保持します ans:=0、プレフィックス:=0 関数dfs()を定義します。これはノードを取ります ノードがnullでない場合、 プレフィックス:=プレフィックス+ノードの値 ans:=ans +(count [prefix --target]、これが利用できない場合は0にな