סיקוואַנסיז פון געגעבן לענג ווען יעדער עלעמענט איז מער ווי אָדער גלייַך צו צוויי מאָל פון די פריערדיקע


שוועריקייט לעוועל גרינג
אָפט געבעטן אין אַקסענטורע אַמאַזאָן קאָדנאַטיאָן facebook גוגל פּייַפּאַל קוואַלקאַם
צעטיילן און קאַנגקער דינאַמיש פּראָגראַממינג

די פּראָבלעם "סיקוואַנסיז פון געגעבן לענג, ווען יעדער עלעמענט איז מער ווי אָדער גלייַך צו צוויי מאָל פון די פריערדיקע", גיט אונדז צוויי גאַנץ נומערן m און n. דאָ m איז די גרעסטע נומער וואָס קענען עקסיסטירן אין די סיקוואַנס און איז די נומער פון עלעמענטן וואָס מוזן זיין פאָרשטעלן אין די פארלאנגט סיקוואַנס. עס איז נאָך אַ באַדינג אויף די סיקוואַנס, וואָס יעדער עלעמענט זאָל זיין מער ווי אָדער גלייַך צו צוויי מאָל צו די פריערדיקע עלעמענט. געפֿינען די גאַנץ נומער פון סיקוואַנסיז אַזוי אַז אַלע די באדינגונגען זענען מקיים.

בייַשפּיל

n = 3, m = 6
4

דערקלערונג

עס זענען 4 סיקוואַנסיז וואָס קענען זיין געמאכט אונטער די באדינגונגען: (1, 2, 4), (1, 2, 5), (1, 2, 6), (1, 3, 6).

צוגאַנג

דער פּראָבלעם פרעגט אונדז צו געפֿינען די גאַנץ נומער פון סיקוואַנסיז פון אַ געגעבן לענג, וואָס יעדער עלעמענט איז מער ווי אָדער גלייַך צו צוויי מאָל פריער. א נאַיוו לייזונג מיט הויך צייט קאַמפּלעקסיטי קענען זיין צו דזשענערייט אַלע די סיקוואַנסיז פון לענג n. די עלעמענטן זאָל נאָכגיין די אַסענדינג סדר און די מאַקסימום נומער זאָל נישט יקסיד m. אָבער אַ מער עפעקטיוו לייזונג קען זיין געווען אויב מיר ינקאָרפּערייטיד די פאַקט אַז יעדער עלעמענט זאָל זיין מער ווי אָדער גלייַך צו צוויי מאָל די פריערדיקע. אזוי מיר קענען שרייַבן אַ רעקורסיווע פאָרמולע. אויב מיר קלייַבן מיר מוזן געפֿינען די סיקוואַנס מיט לענג n-1 און מאַקסימום עלעמענט ב / 2. אַנדערש מיר דאַרפֿן צו געפֿינען די סיקוואַנס מיט לענג און מאַקסימום עלעמענט עם-קסנומקס. כאָטש דעם צוגאַנג איז אַ ביסל מער עפעקטיוו ווי די ביז אַהער דיסקאַסט. דאָס איז אויך צייט-קאַנסומינג.

סיקוואַנסיז פון געגעבן לענג ווען יעדער עלעמענט איז מער ווי אָדער גלייַך צו צוויי מאָל פון די פריערדיקע

אין די קאַסעס וואָס מיר האָבן אַ רעקורסיווע פאָרמולע, מיר נוצן דינאַמיש פּראָגראַממינג. מיר וועלן פשוט מעמאָיזע די אויבן רעקורסיווע לייזונג וואָס מיר דיסקאַסט. אין דעם פאַל, מיר האָבן 2 שטאַטן. דער ערשטער איז די מאַקסימום נומער און די אנדערע איז די לענג פון די סיקוואַנס.

קאָדעקס

C ++ קאָד צו געפֿינען סיקוואַנסיז פון געגעבן לענג, יעדער עלעמענט איז מער ווי אָדער גלייַך צו צוויי מאָל פון די פריערדיקע

#include <bits/stdc++.h>
using namespace std;

int main()
{
    int n = 3, m = 6;
    int dp[m+1][n+1];
    memset(dp, 0, sizeof dp);
    for(int i=0;i<=m;i++)
        dp[i][0] = 1;
    int ans = 0;
    for(int i=1;i<=m;i++){
        for(int j=1;j<=n;j++){
            // we pick the current element
            dp[i][j] = dp[i/2][j-1];
            // we ignore the current element
            dp[i][j] += dp[i-1][j];
        }
    }
    cout<<dp[n][m];
}
4

Java קאָד צו געפֿינען סיקוואַנסיז פון געגעבן לענג, יעדער עלעמענט איז מער ווי אָדער גלייַך צו צוויי מאָל פון די פריערדיקע

import java.util.*;
class Main{
  public static void main(String[] args)
  {
      int n = 3, m = 6;
      int dp[][] = new int[m+1][n+1];
      for(int i=0;i<=n;i++)
      	for(int j=0;j<=m;j++)
      		dp[i][j] = 0;
      for(int i=0;i<=m;i++)
          dp[i][0] = 1;
      for(int i=1;i<=m;i++){
          for(int j=1;j<=n;j++){
              // we pick the current element
              dp[i][j] = dp[i/2][j-1];
              // we ignore the current element
              dp[i][j] += dp[i-1][j];
          }
      };
    System.out.print("dp[n][m]");
  }
}
4

קאַמפּלעקסיטי אַנאַליסיס

צייט קאַמפּלעקסיטי

אָ (N * M), ווייַל די שטאַטן פֿאַר דעם פּראָבלעם זענען די לענג פון די סיקוואַנס און די מאַקסימום נומער וואָס קענען זיין קאַנסידערד. אזוי די צייט קאַמפּלעקסיטי איז פּאַלינאָומיאַל.

ספעיס קאַמפּלעקסיטי

אָ (N * M), ווייַל מיר האָבן באשאפן אַ 2 ד דפּ טיש צו קראָם די ינטערמידייט רעזולטאַטן. די פּלאַץ קאַמפּלעקסיטי איז אויך פּאַלינאָומיאַל.