ﻓﺮﺽ ﮐﻨﯿﺪ ﺩﻧﺒﺎﻟﻪﺍﯼ ﺍﺯ ﺍﻋﺪﺍﺩ ﺩﺍﺭﯾﻢ.ﺩﺭ ﻫﺮ ﻣﺮﺣﻠﻪ میﺗﻮﺍﻥ یکی ﺍﺯ ﺳﻪ ﻋﻤﻠﯿﺎﺕ ﺯﯾﺮ ﺭﺍ ﺭﻭﯼ ﺩﻧﺒﺎﻟﻪ ﺍﻧﺠﺎﻡ ﺩﺍﺩ:
ﺍﺟﺮﺍﯼ ﻫﺮ یک ﺍﺯ ﺩﺳﺘﻮﺭﻫﺎﯼ ﺑﺎﻻ یک ﻭﺍﺣﺪ ﻫﺰﯾﻨﻪ ﺩﺍﺭﺩ. ﻣﺘﻐﯿﺮ size ﺩﺭ ﻫﺮ ﻟﺤﻈﻪ ﺗﻌﺪﺍﺩ ﻋﻀﻮﻫﺎﯼ ﺩﻧﺒﺎﻟﻪ ﺭﺍ ﻧﺸﺎﻥ می دهد. ﺑﺮﺍﯼ ﻣﺜﺎﻝ ﻭقتی ﺩﻧﺒﺎﻟﻪﯼ ⟨۳,۶,۱۰,۱⟩ ﺭﺍ ﺩﺍﺭﯾﻢ، size=۴ ﺍﺳﺖ.
ﻓﺮﺽ ﮐﻨﯿﺪ ﺩﺭ ﺍﺑﺘﺪﺍ ﺩﻧﺒﺎﻟﻪﯼ $⟨۱,۲,...,۱۰۰⟩$ ﺭﺍ ﺩﺍﺭﯾﻢ.ﭘﺲ ﺍﺯ ﺍﺟﺮﺍﯼ ﺍلگوریتم ﺯﯾﺮ، ﻣﺠﻤﻮﻉ ﺍﻋﻀﺎﯼ ﺩﻧﺒﺎﻟﻪ ﭼﻪ ﺧﻮﺍﻫﺪ ﺑﻮﺩ؟
راهنمایی
چند گام ابتدایی الگوریتم را اجرا کنید و سعی کنید الگویی بیابید.
راهنمایی
همانطور که مشهود است، اعداد فرد پاک شده و اعداد زوج با آخرین جایگاه آرایه جمع زده میشوند.
راهنمایی
در آخرین عمل نیز عدد ۳ حذف شده و باقی اعداد زوج در جایگاه نهایی جمع زده شدهاند.
راهنمایی
دقت کنید آنچه مورد پرسش مسئله است، مجموع اعدادیست که در حال حاضر در آرایه هستند. پس با مجموع اعداد زوج، عدد ۱ که همچنان در ابتدای آرایه قرار دارد را نیز بایستی جمع بزنید.
ﻓﺮﺽ ﮐﻨﯿﺪ ﺩﺭ ﺍﺑﺘﺪﺍ ﺩﻧﺒﺎﻟﻪﯼ
$⟨۰,۱⟩$
ﺭﺍ ﺩﺍﺭﯾﻢ.ﭘﺲ ﺍﺯ ﺍﺟﺮﺍﯼ ﺍلگوریتم ﺯﯾﺮ، عنصر اخر دنباله چه خواهد بود؟
به ازای i از ۱ تا ۱۰ انجام بده:
راهنمایی
دقت کنید در هر بار اجرای سه دستور متوالی داده شده، یک عدد به انتهای آرایه اضافه میشود. این عدد نسبت به اعداد قبلی آرایه چگونه تعیین میشود؟
راهنمایی
هر عدد، برابر جمع دو عدد پیشین خود خواهد بود.
راهنمایی
چون در ابتدا دو عدد در دنباله داریم و ده بار گام داده شده را اجرا میکنیم، پاسخ برابر ۱۲ امین عضو دنباله است.
ﻓﺮﺽ ﮐﻨﯿﺪ ﺩﺭ ﺍﺑﺘﺪﺍ ﺩﻧﺒﺎﻟﻪﯼ $⟨۱⟩$ ﺭﺍ ﺩﺍﺭﯾﻢ و میخواهیم با یک برنامه به دنباله $⟨۱,۲,...,۱۰۰⟩$ برسیم. کمینه هزینه (تعداد اجراهای دستورهای) مورد نیاز چیست؟
راهنمایی
ساخت یک عدد متمایز با اعداد کنونی دنباله به حداقل یک عمل merge نیاز دارد و هر عمل merge تعداد اعداد دنباله را یک واحد کم می کند.