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から始めて増やします)
- 合計がnと同じ場合、次のようになります。
- (終了を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
-
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
-
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にな