- ارسال ها
- 199
- لایک ها
- 268
- امتیاز
- 0
تمامِ رشتههایی که تنها با حروفِ a , b ساختهمیشوند و دستِبالا n رقم دارند، درنظربگیرید. این رشتهها را به ترتیبِ الفبایی مرتبکرده و در یک دنباله بنویسید. مثلاً برایِ n=3، دنباله به صورتِ زیر است:
a, aa, aaa, aab, ab, aba, abb, b, ba, baa, bab, bb, bba, bbb
حال به روشنی قابلِ مشاهده است که رشتهیِ aab در دنبالهی بالا در مکانِ 4ام قرار دارد. حال الگوریتم زیر را در نظر بگیرید که n را به همراهِ رشتهای از ورودی دریافت میکند و مکانِ آن رشته را در دنباله تحویل میدهد:
1. n و رشتهیِ R را از ورودی تحویلبگیر.
2. تعداد حرفهای R را در k بریز.
3. مقدارِ sum را برابر با صفر قرار بده.
4. برایِ هر i از 1 تا k انجام بده:
1.4. اگر iام (از سمتِ چپ)، a بود
1.1.4. sum را با 1 جمع کن و حاصل را در sum بریز.
2.4. در غیرِ این صورت
1.2.4. sum را با دو به توان (n-i+1) جمعکن و حاصل را در sum بریز.
5. مقدارِ sum را به عنوانِ خروجی تحویل بده.
نشاندهید الگوریتمِ بالا درست کار میکند.
a, aa, aaa, aab, ab, aba, abb, b, ba, baa, bab, bb, bba, bbb
حال به روشنی قابلِ مشاهده است که رشتهیِ aab در دنبالهی بالا در مکانِ 4ام قرار دارد. حال الگوریتم زیر را در نظر بگیرید که n را به همراهِ رشتهای از ورودی دریافت میکند و مکانِ آن رشته را در دنباله تحویل میدهد:
1. n و رشتهیِ R را از ورودی تحویلبگیر.
2. تعداد حرفهای R را در k بریز.
3. مقدارِ sum را برابر با صفر قرار بده.
4. برایِ هر i از 1 تا k انجام بده:
1.4. اگر iام (از سمتِ چپ)، a بود
1.1.4. sum را با 1 جمع کن و حاصل را در sum بریز.
2.4. در غیرِ این صورت
1.2.4. sum را با دو به توان (n-i+1) جمعکن و حاصل را در sum بریز.
5. مقدارِ sum را به عنوانِ خروجی تحویل بده.
نشاندهید الگوریتمِ بالا درست کار میکند.