مسئله StringLD ( که LD مخفف Left Delete هست)
تابع stringld یه تابعی هست که یک رشته رو می گیره و سمت چپ ترین کاراکترشو حذف می کنه .
مثلا "acm" میشه "cm" .
به شما لیستی از کلمه های مجزا داده میشه و در هر مرحله ما تابع stringld رو روی این کلمه اعمال می کنیم . وظیفه ما اینه که برنامه ای بنویسیم که تعداد مراحلی که لازم است طی بشه (توسط تابع Stringld ) تا حداقل یکی از وضعیت های زیر صادق بشه :
1- یکی از کلمات empty بشه . یعنی "" بشه
2- دو کلمه یکسان حاصل بشه .
مثلا کلمات aab ، abac و caac رو داریم . برای اولین بار تابع رو روی هر کدوم اعمال می کنیم . نتیجه میشه :
bac - ab - aac
می بینیم که هیچ کدوم از شرط های فوق صادق نشدن . پس برای دومین بار تابع رو اعمال می کنیم :
ac - b - ac
می بینیم که کلمه ac دو تا شد . پس شرط 2 صادقه . بنابراین برنامه ما 1 رو به عنوان نتیجه چاپ می کنه . حالا چرا 1 و 2 نه ؟ دلیلش اینه که ما مرحله آخر رو که باعث میشه یکی از شرط ها true بشه لحاظ نمی کنیم .
ورودی برنامه :
اولین خط از ورودی شامل یک عدد n است که بین 1 تا 100 هست . (خود 1 و 100 هم هستن ) بعد از این خط ، n تا کلمه باید وارد بشه . ورودی تا زمانی ادامه داره که به جای n صفر وارد بشه .
خروجی برنامه :
بیشترین تعداد فراخوانی تابع stringld رو چاپ می کنیم . طبق شرایطی که قبلا گفته شد .
مثلا فرض کنین ورودی به شکل زیر هست :
4
aaba
aaca
baabcd
dcba
3
aaa
bbbb
ccccc
0
خروجی باید این طوری باشه :
1
2
مسئله به نسبت راحتیه برای شروع کار ...