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

C++でSternの二原子分子シリーズからn番目の要素を検索します


ここでは、SternのDiatomicシリーズのn番目の用語を見つける方法を説明します。この系列は、0、1、1、2、1、3、2、3、1、4、3、5、2、5、3、4のようなものです。これはfusc関数とも呼ばれます。このシリーズは次のように定義できます-

𝑝(𝑛)=$ p \ lgroup \ frac {n} {2} \rgroup$𝑤ℎ𝑒𝑛𝑛𝑖𝑠𝑒𝑣𝑒𝑛

𝑝(𝑛)=$ p \ lgroup \ frac {n-1} {2} \ rgroup + p \ lgroup \ frac {n + 1} {2} \rgroup$𝑤ℎ𝑒𝑛𝑛𝑖𝑠𝑜𝑑𝑑

𝑝(0)=0𝑎𝑛𝑑𝑝(1)=1

ここでは、動的計画法を使用して、計算の数を減らします。 p(0)とp(1)の基本ケースを保存した後、インデックスi =2からnまで反復し、p(i)

を計算します。

#include<iostream>
using namespace std;
int findTerm(int n) {
   int table[n+1];
   table[0] = 0;
   table[1] = 1;
   for (int i = 2; i <= n; i++) {
      if (i % 2 == 0)
         table[i] = table[i / 2];
      else
         table[i] = table[(i - 1) / 2] + table[(i + 1) / 2];
   }
   return table[n];
}
int main() {
   cout << 3 << " rd term is: " << findTerm(3) << endl;
   cout << 15 << " th term is: " << findTerm(15) << endl;
   cout << 20 << " th term is: " << findTerm(20) << endl;
}

出力

3 rd term is: 2
15 th term is: 4
20 th term is: 3

  1. シリーズ1、2、11、12、21のN番目の項をC++で検索するプログラム

    この問題では、番号Nが与えられます。私たちのタスクは、C++でシリーズ1、2、11、12、21…のN番目の項を見つけるプログラムを作成することです。 問題の説明 級数のN番目の項を見つけるには- 1、2、11、12、21、22、111、112、.... Nterms シリーズの総称を見つけます。 問題を理解するために例を見てみましょう 入力 N =8 出力 112 ソリューションアプローチ 一般的な用語を導き出すには、シリーズを注意深く観察する必要があります。このシリーズでは、値に1と2しかないことがわかります。そして、すべての用語は1と2の交互になります。したがって、一

  2. シリーズ3、5、33、35、53のN番目の項をC++で検索するプログラム

    このチュートリアルでは、シリーズ3、5、33、35、53のN番目の用語を見つけるプログラムについて説明します… このために、番号が提供されます。私たちの仕事は、その特定の位置で特定のシリーズの用語を見つけることです。 例 #include <bits/stdc++.h> using namespace std; //finding the nth term in the series int printNthElement(int n){    int arr[n + 1];    arr[1] = 3;    arr[