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

ゼッケンドルフの定理のためのC++プログラム?


ここでは、隣接していないフィボナッチ数を加算して、指定された合計が見つかるかどうかを確認する方法を確認します。見つかった場合、その数は何ですか?たとえば、give sum値が10の場合、これは8と2の合計です。8と2はどちらもフィボナッチ項であり、隣接していません。アイデアを得るためのアルゴリズムを見てみましょう。

アルゴリズム

nonNeighbourFibo(sum)

Begin
   while sum > 0, do
      fibo := greatest Fibonacci term but not greater than sum
      print fibo
      sum := sum - fibo
   done
End

#include<iostream>
using namespace std;
int fibonacci(int n) {
   if (n == 0 || n == 1)
      return n;
   // get the greatest Fibonacci Number smaller than n.
   int prev = 0, curr = 1, next = 1;
   while (next <= n) {
      prev = curr;
      curr = next;
      next = prev + curr;
   }
   return curr;
}
void nonNeighbourFibo(int sum) {
   while (sum > 0) {
      int fibo = fibonacci(sum);
      cout << fibo << " ";
      sum = sum - fibo;
   }
}
int main() {
   int sum = 120;
   cout << "Sum is same as Non-adjacent Fibonacci terms: ";
   nonNeighbourFibo(sum);
}

出力

Sum is same as Non-adjacent Fibonacci terms: 89 21 8 2

  1. QuickSort用のC++プログラム?

    クイックソートは、比較を使用してソートされていないリスト(配列)をソートするソート手法です。クイックソートは、パーティション交換ソートとも呼ばれます。 等しいソート項目の相対的な順序が保持されないため、安定したソートではありません。クイックソートは配列を操作できるため、ソートを実行するために少量の追加メモリが必要です。常に最悪の場合のパーティションを選択するわけではないことを除いて、選択ソートと非常によく似ています。したがって、選択ソートのより適切な形式と見なすことができます。 QuickSortは、最も効率的な並べ替えアルゴリズムの1つであり、配列を小さい配列に分割することに基づいていま

  2. 最初のn個の自然数の二乗和のためのC++プログラム?

    この問題では、最初のn個の自然数の2乗の合計を取得する方法を確認します。ここでは、1からnまで実行されるforループを使用しています。各ステップで、項の2乗を計算し、それを合計に追加します。このプログラムは、完了するまでにO(n)時間かかります。しかし、これをO(1)または一定時間で解きたい場合は、この級数式-を使用できます。 アルゴリズム squareNNatural(n) begin    sum := 0    for i in range 1 to n, do       sum := sum + i^2 &