فبونیکی نمبرز کو الٹ ترتیب میں پرنٹ کریں


مشکل سطح آرام سے
اکثر پوچھا جاتا ہے ایکسینچر میک o9 حل یو ایچ جی آپٹیم
متحرک پروگرامنگ تسلسل

مسئلہ یہ بیان

ایک نمبر دیئے گئے ، فبونیکی نمبرز کو الٹ ترتیب میں پرنٹ کریں۔

مثال کے طور پر

n = 5
3 2 1 1 0

وضاحت: فبونیکی تعداد ان کے حکم کے مطابق 0 ، 1 ، 1 ، 2 ، 3 ہیں۔ لیکن چونکہ ہمیں الٹ ترتیب میں پرنٹ کرنے کی ضرورت تھی۔

n = 7
8 5 3 2 1 1 0

فبونیکی نمبرز کو الٹ ترتیب میں پرنٹ کریں

اعداد و شمار سے پتہ چلتا ہے کہ کس طرح فبونیکی کی تعداد آخری 2 فبونیکی تعداد کے نتیجہ پر منحصر ہے۔

الگورتھم

  1. ان پٹ لیں ، طباعت کے لئے عناصر کی تعداد۔
  2. دیئے گئے ان پٹ کی طرح سائز کا ایک صف قرار دیں۔
  3. 0 اور 1 کے ساتھ 0 ویں اور 1 ویں سرنی انڈیکس کو شروع کریں۔
  4. ہم i = 2 سے لوپ چلنا شروع کرتے ہیں ، یہاں تک کہ i کی ویلیو ایک سے بڑھ کر i کی قدر ن سے کم ہوجاتی ہے۔
    1. آخری انڈیکس عنصر کا اضافہ اور آخری سے آخری انڈیکس عنصر کا ذخیرہ کرتے رہیں۔
  5. اب اس صف کو الٹا ترتیب میں پرنٹ کریں۔

نقطہ نظر

فبونیکی نمبر پرنٹ کرنے کے لئے ایک آسان نقطہ نظر ہمیشہ رہا ہے تکرار. اور جب بھی ہمیں تکرار کے بارے میں بتایا جاتا ہے تو ، پہلی بات جس کے بارے میں ہمیں عام طور پر بتایا جاتا ہے وہ ہیں فبونیکی تعداد۔ لہذا ، تکرار کا استعمال کرتے ہوئے ہم فبونیکی نمبر تلاش کرسکتے ہیں۔ اور پھر انھیں سیدھے ریورس ترتیب میں پرنٹ کریں۔ لیکن ایسا کرنے کے ل heavy بھاری حساب کتاب کی ضرورت ہے ، لہذا ایسا کرنے کے بجائے ہمیں متبادل نقطہ نظر کے بارے میں سوچنے کی ضرورت ہے۔

متبادل نقطہ نظر ہے متحرک پروگرامنگ، جہاں ہم اعداد و شمار کو اسٹور کرتے ہیں جس میں مسئلہ کو حل کرنے میں زیادہ کثرت سے ضرورت ہوتی ہے۔ ہم نے استعمال کرتے ہوئے فبونیکی نمبر تلاش کرنے پر بھی تبادلہ خیال کیا ہے متحرک پروگرامنگ پچھلے میں پوسٹ.

ضابطے

سی ++ کوڈ کو ریورس ترتیب میں فبوناکسی نمبر پرنٹ کرنا ہے

#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

جاوا کوڈ کو الٹ ترتیب میں فبونیکی نمبرز پرنٹ کرنا ہے

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

پیچیدگی کا تجزیہ

وقت کی پیچیدگی

O (N) ، اس وقت کو فبونیکی اعداد کی گنتی کرنے کی ضرورت ہے۔ کیونکہ ہم فبوناکسی تسلسل تلاش کرنے کے لئے صرف ایک ہی لوپ چلاتے ہیں۔ وقت کی پیچیدگی لکیری ہے۔

خلائی پیچیدگی

O (N) ، کیونکہ ہم نے فبونیکی اعداد کی قدروں کو ذخیرہ کرنے کے لئے ایک صف کا استعمال کیا ہے ، اس لئے خلائی پیچیدگی لکیری ہے۔