ဖီဘိုနာချီဂဏန်းများကိုနောက်အစဉ်လိုက်ပုံနှိပ်ပါ  


ခက်ခဲအဆင့် လွယ်ကူသော
မကြာခဏမေးတယ် Accenture MAQ o9 ဖြေရှင်းနည်းများ UHG Optum
Dynamic Programming အစဉ်အတိုင်းလိုက်ခြင်း

ပြProbleနာဖော်ပြချက်  

n နံပါတ်ကိုပေးထားပြီး၊ ဂဏန်းနံပါတ်တွေကိုပြောင်းပြန်အစဉ်အတိုင်း print ထုတ်ပါ။

နမူနာ  

n = 5
3 2 1 1 0

ရှင်းလင်းချက် - ဖီဘိုနာချီဂဏန်းတွေက ၀၊ ၁၊ ၁၊ ၂၊ ၃ ဖြစ်တယ်။ ဒါပေမယ့်ကျနော်တို့နောက်ပြန်နိုင်ရန်အတွက်ပုံနှိပ်ဖို့လိုအပ်ကတည်းက။

n = 7
8 5 3 2 1 1 0

ဖီဘိုနာချီဂဏန်းများကိုနောက်အစဉ်လိုက်ပုံနှိပ်ပါတွယ်အပ်  

ဒီကိန်းဂဏန်းသည်ဖီဘိုနာချီဂဏန်းများသည်နောက်ဆုံးဖီဘိုနာချီဂဏန်း ၂ ခု၏ရလဒ်ပေါ်မူတည်ကြောင်းဖော်ပြသည်။

algorithm  

  1. input ကိုယူ, ပုံနှိပ်ခံရဖို့ဒြပ်စင်များ၏နံပါတ်။
  2. ပေးထားသောထည့်သွင်းမှုတစ်ခုအနေဖြင့်အရွယ်အစားတစ်ခုခင်းကျင်းမှုကိုကြေညာပါ။
  3. 0 နှင့် 1 ဖြင့် 0th နှင့် 1th ခင်းကျင်းမှုအညွှန်းကိန်းကိုစတင်ပါ။
  4. i = 2 ကနေ loop တစ်ခုကိုစလိုက်သည်။ i ၏တန်ဖိုးသည် n ထက်ငယ်သည်အထိ i ၏တန်ဖိုးကိုတစ်ကြောင်းချင်းတိုးလိုက်သည်။
    1. နောက်ဆုံးအညွှန်းဒြပ်စင်၏နောက်ဆက်တွဲကိုသိမ်းဆည်းထားပါနှင့်နောက်ဆုံးအညွှန်းကိန်းဒြပ်စင်သည်။
  5. အခုဒီ array ကိုနောက်ပြန်အစီအစဉ်ဖြင့်ပုံနှိပ်ပါ။

ချဉ်းကပ်နည်း  

ဖီဘိုနာချီဂဏန်းများကိုပုံနှိပ်ထုတ်ဝေရန်နုံဗျူဟာနည်းရှိသည် ပြန်လည်။ နောက်တစ်ခါပြန်လည်ထူထောင်ရေးအကြောင်းပြောတဲ့အခါငါတို့ယေဘုယျအားဖြင့်ပြောရရင်ဖီဘိုနာချီဂဏန်းတွေပါ။ ဒီတော့ recursion ကိုသုံးပြီး Fibonacci နံပါတ်တွေကိုရှာနိုင်တယ်။ ပြီးရင်ရိုးရိုးရှင်းရှင်းပြန်ဖတ်ပါ။ သို့သော်ထိုသို့ပြုလုပ်ရန်တွက်ချက်မှုများစွာလိုအပ်သည်။ ထို့ကြောင့်၎င်းကိုလုပ်မည့်အစားအခြားနည်းလမ်းတစ်ခုကိုစဉ်းစားရန်လိုအပ်သည်။

အဆိုပါအခြားရွေးချယ်စရာချဉ်းကပ်မှုဖြစ်ပါတယ် dynamic programming ကို, ပြweနာကိုဖြေရှင်းရာတွင်ပိုမိုမကြာခဏလိုအပ်သည့်အချက်အလက်များကိုသိုလှောင်ထားသောနေရာ။ အသုံးပြုပြီးဂဏန်းနံပါတ်ရှာဖွေခြင်းကိုလည်းဆွေးနွေးထားတယ် dynamic programming ကို ယခင်၌ တိုင်.

လည်းကြည့်ရှုပါ
အများဆုံးငွေပမာဏနှင့်အတူ Subarray ၏အရွယ်အစား

ကုဒ်  

ဂဏန်းနံပါတ်များကိုနောက်အစဉ်လိုက်ပုံနှိပ်ရန် C ++ ကုဒ်

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

int main()
{
    int n;cin>>n;
    int fib[n];
    if(n>=1)
    fib[0] = 0;
    if(n>=2)
    fib[1] = 1;
    for(int i=2;i<n;i++)
        fib[i] = fib[i-1] + fib[i-2];
    for(int i=n-1;i>=0;i--)
        cout<<fib[i]<<" ";
}
4
2 1 1 0

ဂဏန်းနံပါတ်များကိုနောက်အစဉ်လိုက် print ထုတ်ရန် Java ကုဒ်ဖြစ်သည်

import java.util.*;
class Main{
  
  public static void main(String[] args)
  {
    Scanner sc = new Scanner(System.in);
    int n = sc.nextInt();
    	int fib[] = new int[n];
    	if(n>=0)
    		fib[0] = 0;
    	if(n>=1)
    		fib[1] = 1;
    	for(int i=2;i<n;i++)
    		fib[i] = fib[i-1] + fib[i-2];
    	for(int i=n-1;i>=0;i--)
    		System.out.print(fib[i]+" ");
  	}
}
4
2 1 1 0

ရှုပ်ထွေးဆန်းစစ်ခြင်း  

အချိန်ရှုပ်ထွေး

အို (N)၊ ဤအချိန်သည်ဂဏန်းနံပါတ်များကိုတွက်ချက်ရန်လိုအပ်သည်။ ဘာလို့လဲဆိုတော့ငါတို့ကတူညီတဲ့ကွင်းဆက်တစ်ခုတည်းကိုပဲအလုပ်လုပ်ပြီး၊ အဆိုပါအချိန်ရှုပ်ထွေး linear ဖြစ်ပါတယ်။

အာကာသရှုပ်ထွေးမှု

အို (N)၊ ဘာလို့လဲဆိုတော့ငါတို့ကိန်းဂဏန်းတန်ဖိုးများ၏တန်ဖိုးကိုသိမ်းဆည်းရန်ခင်းကျင်းချက်တစ်ခုကိုအသုံးပြုခဲ့ကြသောကြောင့်၊