انواع محدوده نوسان روزانه قیمت سهام

ساخت وبلاگ

مشکل دامنه سهام یک مشکل مالی است که در آن ما یک سری N مظنه قیمت روزانه برای یک سهم داریم و باید دامنه قیمت سهام را برای تمام N روز محاسبه کنیم. بازه Si قیمت سهام در یک روز معین i به عنوان حداکثر تعداد روزهای متوالی درست قبل از روز معین تعریف می شود که برای آن قیمت سهام در روز جاری کمتر از قیمت آن در روز معین است.

مثال ها:

ورودی: N = 7، قیمت[] = [100 80 60 70 60 75 85] خروجی: 1 1 1 2 1 4 6 توضیح: پیمایش دهانه ورودی داده شده برای 100 1 خواهد بود، 80 کوچکتر از 100 است، بنابراین دهانه1، 60 کوچکتر از 80 است، بنابراین دهانه 1 است، 70 بزرگتر از 60 است، بنابراین دهانه 2 است و غیره. بنابراین خروجی 1 1 1 2 1 4 6 خواهد بود.

ورودی: N = 6، قیمت[] = [10 4 5 90 120 80] خروجی: 1 1 2 4 5 1 توضیح: پیمایش دهانه ورودی داده شده برای 10 1 خواهد بود، 4 کوچکتر از 10 است بنابراین دهانه 1 خواهد بود.، 5 بزرگتر از 4 است بنابراین دهانه 2 خواهد بود و غیره. بنابراین، خروجی 1 1 2 4 5 1 خواهد بود.

رویکرد ساده لوحانه:برای حل مشکل ایده زیر را دنبال کنید:

از آرایه قیمت ورودی عبور کنید. برای هر عنصری که بازدید می شود، عناصر را در سمت چپ آن تراورس کنید و مقدار دهانه آن را افزایش دهید در حالی که عناصر سمت چپ کوچکتر هستند.

در زیر پیاده سازی رویکرد فوق آمده است:

C++

// برنامه C++ برای روش brute force // برای محاسبه مقادیر بازه سهام #عبارتند از با استفاده از namespace std. // آرایه S[] را با مقادیر span پر می کند voidcalculateSpan(int Price[], int n, int S[]) // مقدار فاصله روز اول همیشه 1 است S[0] = 1; // مقدار بازه روزهای باقیمانده را محاسبه کنید // با بررسی خطی روزهای قبل برای (int i = 1; i= 0) && (price[i]>= قیمت[j])؛j--) // یک تابع کاربردی برای چاپ عناصر آرایه void printArray(int arr[], int n) برای (int i = 0; i; int n = sizeof (قیمت) / sizeof (قیمت[0]); int S[n]; // مقادیر span را در آرایه S پر کنید[] CalculSpan (قیمت، n، S)؛ // مقادیر دهانه محاسبه شده را چاپ کنید printArray(S, n); بازگشت 0; // این کد توسط rathbhupendra ارائه شده است

C

// برنامه C برای روش brute force برای محاسبه بازه انبار // ارزش های #عبارتند از // آرایه S[] را با مقادیر span پر می کند voidcalculateSpan(int Price[], int n, int S[]) // مقدار فاصله روز اول همیشه 1 است S[0] = 1; // مقدار بازه روزهای باقیمانده را به صورت خطی محاسبه کنید // بررسی روزهای قبل برای (int i = 1; i= 0) && (price[i]>= قیمت[j])؛j--) // یک تابع کاربردی برای چاپ عناصر آرایه void printArray(int arr[], int n) برای (int i = 0; i; int n = sizeof (قیمت) / sizeof (قیمت[0]); int S[n]; // مقادیر span را در آرایه S پر کنید[] CalculSpan (قیمت، n، S)؛ // مقادیر دهانه محاسبه شده را چاپ کنید printArray(S, n); بازگشت 0;

جاوا

// اجرای جاوا برای محاسبه روش نیروی بی رحمانه // مقادیر دهانه سهام وارد کردن java. util. arrays ؛ GFG کلاس< // روش محاسبه مقادیر دهانه سهام محاسبه void static (قیمت int [] ، int n ، int s []) // مقدار فاصله روز اول همیشه 1 است S [0] = 1 ؛ // مقدار دهانه روزهای باقیمانده را محاسبه کنید // بررسی خطی روزهای قبل برای (int i = 1 ؛ i= 0 ) && (price[i]>= قیمت[j])؛j--) // یک تابع کاربردی برای چاپ عناصر آرایه static void printarray (int arr []) system. out. print (arrays. tostring (arr)) ؛ // کد درایور عمومی استاتیک اصلی اصلی (رشته [] args) قیمت بین المللی[] =<10 , 4 , 5 , 90 , 120 , 80>; int n = price. l طول ؛ int s [] = int جدید [n] ؛ // مقادیر span را در آرایه S پر کنید[] CalculSpan (قیمت، n، S)؛ // مقادیر دهانه محاسبه شده را چاپ کنید PrintArray (ها) ؛ // این کد توسط sumit ghosh کمک می کند

پایتون 3

# برنامه Python3 برای روش نیروی بی رحمانه برای محاسبه مقادیر دهانه سهام # لیست S [] را با مقادیر دهانه پر کنید DEF CALCULATESPAN (قیمت ، N ، S): # ارزش دهانه روز اول همیشه 1 است S [0] = 1 # مقدار دهانه روزهای باقیمانده را به صورت خطی محاسبه کنید # بررسی روزهای قبل برای من در محدوده (1 ، n ، 1): s [i] = 1 # مقدار دهانه اولیه را اولیه کنید # Traverse سمت چپ در حالی که عنصر بعدی در سمت چپ است # کوچکتر از قیمت [i] j = i - 1 while (j> = 0 ) and (price[i]>= قیمت [j]): S [i] + = 1 j - = 1 # یک تابع ابزار برای چاپ عناصر آرایه def printarray (arr ، n): برای من در محدوده (n): چاپ (arr [i] ، end = "") # برنامه درایور برای آزمایش عملکرد فوق قیمت = [10 ، 4 ، 5 ، 90 ، 120 ، 80] n = len (قیمت) S = [هیچ] * n # مقادیر دهانه را در لیست [] پر کنید محاسبه پان (قیمت ، N ، S) # مقادیر دهانه محاسبه شده را چاپ کنید Printarray (S ، N) # این کد توسط Sunny Karira کمک می کند

C#

// C# اجرای روش نیروی بی رحمانه // برای محاسبه مقادیر بازه سهام استفاده از سیستم ؛ GFG کلاس< // روش محاسبه مقادیر دهانه سهام محاسبه void static (int [] قیمت ، int n ، int [] s) // مقدار فاصله روز اول همیشه 1 است S[0] = 1; // مقدار دهانه باقی مانده را محاسبه کنید // روز با بررسی خطی قبلی // روزها برای (int i = 1; i= 0) && (price[i]>= قیمت[j])؛j--) // یک تابع ابزار برای چاپ عناصر // آرایه PrintArray void static (int [] arr) نتیجه رشته = رشته . join ("" ، arr) ؛ Console. Writeline (نتیجه) ؛ // کد درایور عمومی استاتیک عمومی اصلی () int [] قیمت =<10, 4, 5, 90, 120, 80>; int n = price. l طول ؛ int [] s = int جدید [n] ؛ // مقادیر span را در آرایه S پر کنید[] CalculSpan (قیمت، n، S)؛ // مقادیر دهانه محاسبه شده را چاپ کنید PrintArray (ها) ؛ // این کد توسط SAM007 کمک می کند.

PHP

// برنامه PHP برای روش نیروی بی رحمانه // برای محاسبه مقادیر بازه سهام // آرایه S[] را با مقادیر span پر می کند عملکرد محاسبه کننده (قیمت $ ، $ n ، $ s) // مقدار دهانه اول // روز همیشه 1 است $ s [0] = 1 ؛ // مقدار دهانه را محاسبه کنید // روزهای باقی مانده توسط خطی // بررسی روزهای قبل برای ($ i = 1 ؛ $ i<$n ; $i ++) // مقدار دهانه را اولیه کنید $ s [$ i] = 1 ؛ // عبور از سمت چپ در حالی که بعدی // عنصر در سمت چپ کوچکتر است // از قیمت [i] for ( $j = $i - 1; ( $j>= 0) && ( $price [ $i ]>= $ قیمت [$ j]) ؛$ j -) $ s [$ i] ++ ؛ // چاپ محاسبه شده // مقادیر دهانه برای ($ i = 0 ؛ $ i<$n ; $i ++) echo $ s [$ i]."" ؛ ؛ // کد درایور قیمت $ = آرایه (10 ، 4 ، 5 ، 90 ، 120 ، 80) ؛ $ n = تعداد (قیمت $) ؛ $ s = آرایه ($ n) ؛ // مقادیر span را در آرایه S پر کنید[] محاسبه پان (قیمت $ ، $ n ، $ s) ؛ // این کد توسط SAM007 کمک می کند

جاذب

// اجرای JavaScript برای روش نیروی بی رحمانه // برای محاسبه مقادیر بازه سهام // روش محاسبه مقادیر دهانه سهام عملکرد محاسبه پان (قیمت ، N ، S) // مقدار فاصله روز اول همیشه 1 است S[0] = 1; // مقدار دهانه باقی مانده را محاسبه کنید // روز با بررسی خطی قبلی // روزها برای (بگذارید من = 1 ؛ من= 0) && (price[i]>= قیمت[j])؛j--) // یک تابع ابزار برای چاپ عناصر // آرایه عملکرد PrintArray (ARR) اجازه دهید نتیجه = arr. join ("") ؛ document. write (نتیجه) ؛ اجازه دهید قیمت = [10 ، 4 ، 5 ، 90 ، 120 ، 80] ؛ اجازه دهید n = قیمت. طول ؛ اجازه دهید s = آرایه جدید (n) ؛ s. fill (0) ؛ // مقادیر span را در آرایه S پر کنید[] CalculSpan (قیمت، n، S)؛ // مقادیر دهانه محاسبه شده را چاپ کنید PrintArray (ها) ؛ خروجی
1 1 2 4 5 1

پیچیدگی زمان: O (n 2) فضای کمکی: O (N)

مشکل طول سهام با استفاده از پشته:

برای حل مشکل ، ایده زیر را دنبال کنید:

ما می بینیم که اگر ما نزدیکترین روز قبل از من را بدانیم ، می توانم به راحتی محاسبه کنم ، به گونه ای که قیمت از آن روز بیشتر از قیمت روز من باشد. اگر چنین روزی وجود داشته باشد ، بگذارید آن را H (i) بنامیم ، در غیر این صورت ، ما H (i) = -1 را تعریف می کنیم که دهانه اکنون به صورت s [i] = i-h (i) محاسبه می شود. نمودار زیر را ببینید

برای اجرای این منطق ، ما از یک پشته به عنوان یک نوع داده انتزاعی برای ذخیره روزهای i ، h (i) ، h (h (i)) و غیره استفاده می کنیم. وقتی از روز I-1 به من می رویم ، روزهایی را که قیمت سهام کمتر از یا برابر با قیمت بود ، پاپ می کنیم و سپس ارزش روز را که به پشته باز می گردانم فشار می دهیم.

مراحل زیر را برای حل مشکل دنبال کنید:

  • یک پشته از نوع int ایجاد کرده و 0 را در آن فشار دهید
  • پاسخ روز 1 را به عنوان 1 تنظیم کنید و یک حلقه را برای عبور از روزها اجرا کنید
  • در حالی که پشته خالی نیست و قیمت St. Top کمتر از یا برابر با قیمت روز جاری است ، ارزش بالا را بالا ببرید
  • پاسخ روز فعلی را به عنوان i+1 تنظیم کنید اگر پشته خالی دیگر برابر با من باشد - St. Top
  • روز فعلی را به داخل پشته فشار دهید
  • پاسخ را با استفاده از آرایه پاسخ چاپ کنید

در زیر پیاده سازی رویکرد فوق آمده است:

توجه: ما باید موردی را نیز بررسی کنیم که تمام قیمت سهام باید یکسان باشد ، بنابراین ما فقط باید بررسی کنیم که آیا قیمت سهام فعلی از قیمت قبلی بزرگتر است یا خیر. وقتی قیمت سهام فعلی و قبلی یکسان باشد ، از پشته پاپ نخواهیم کرد.

 

کتاب آموزش بورس...
ما را در سایت کتاب آموزش بورس دنبال می کنید

برچسب : نویسنده : محسن زنجانچی بازدید : 29 تاريخ : چهارشنبه 8 شهريور 1402 ساعت: 19:47