מינימום סומע פון ​​קייפל פון נומערן  


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

די פּראָבלעם "מינימום סומע פון ​​מאַלטאַפּלייינג פון N נומערן" שטאַטן אַז איר באַקומען N ינטאַדזשערז און איר דאַרפֿן צו מינאַמייז די סומע פון ​​קייפל פון אַלע די נומערן דורך נעמען צוויי יסודות וואָס זענען שכייניש אין אַ צייַט און שטעלן זייער סומע 100 ביז אַ איין נומער איז לינקס.

בייַשפּיל  

מינימום סומע פון ​​קייפל פון נומערןשפּילקע

10 20 30
1100

דערקלערונג

ערשטער, מיר מערן 10 און 20 צו באַקומען 200 און דעמאָלט שטעלן צוריק (10 + 20)% 100 = 30. איצט מיר האָבן [30, 30]. דערנאָך מערן 30 * 30 = 900. דער ענטפער איז 900 + 200 = 1100.

אויב מיר וואָלט האָבן ערשטער געמערט 20 און 30. מיר וואָלט האָבן גאַטאַן (20 * 30) + (10 * 50) = 1100. אזוי ביידע וועגן מיר וואָלט האָבן גאַט דער זעלביקער רעזולטאַט.

צוגאַנג  

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

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

זע אויך
פּראָגראַם פֿאַר בריק און טאָרטש פּראָבלעם

קאָדעקס  

C ++ קאָד צו געפֿינען מינימום סומע פון ​​קייפל נומערן

#include <bits/stdc++.h>
using namespace std;
int dp[5][5];
int sum(int i, int j, int a[]){
  int ans = 0;
  for (int k=i;k<=j;k++)
    ans=(ans+a[k])%100;
  return ans;
}

int minimumSum(int i, int j, int a[]){
    if(i==j)return 0;
  if (dp[i][j] != INT_MAX)
    return dp[i][j];
    // divide the problem into subproblems
  for(int k=i;k<j;k++)
        dp[i][j] = min(dp[i][j], minimumSum(i,k,a)+minimumSum(k+1,j,a) + sum(i,k,a)*sum(k+1,j,a));
  return dp[i][j];
}

int main() {
  int a[] = {10, 20, 30};
  int n = sizeof(a) / sizeof(a[0]);
  for(int i=0;i<5;i++){
        for(int j=0;j<5;j++)
            dp[i][j] = INT_MAX;
  }
  cout<<minimumSum(0,n-1,a);
}
1100

Java קאָד צו געפֿינען מינימום סומע פון ​​קייפל נומערן

import java.util.*;
class Main{
  static int dp[][] = new int[5][5];
  static int sum(int i, int j, int a[]){
    int ans = 0;
    for (int k=i;k<=j;k++)
      ans=(ans+a[k])%100;
    return ans;
  }

  static int minimumSum(int i, int j, int a[]){
      if(i==j)return 0;
    if (dp[i][j] != Integer.MAX_VALUE)
      return dp[i][j];
      // divide the problem into subproblems
    for(int k=i;k<j;k++)
          dp[i][j] = Math.min(dp[i][j], minimumSum(i,k,a)+minimumSum(k+1,j,a) + sum(i,k,a)*sum(k+1,j,a));
    return dp[i][j];
  }

  public static void main(String[] args)
  {
    int a[] = {10, 20, 30};
    int n = a.length;
    for(int i=0;i<5;i++){
          for(int j=0;j<5;j++)
              dp[i][j] = Integer.MAX_VALUE;
    }
    int ans = minimumSum(0,n-1,a);
    	System.out.print(ans);
  	}
}
1100

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

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

אָ (N ^ 3), ווייַל עס זענען N ^ 2 שטאַטן און צו רעכענען די רעזולטאַט פֿאַר יעדער, מיר זענען אָפענגיק אויף אַן ען נומער פון שטאַטן. אזוי די צייט קאַמפּלעקסיטי איז פּאַלינאָומיאַל.

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

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