PDA

View Full Version : الگوریتم بازگشتی شمارش تعداد درخت با n گره



mahdi bg
جمعه 16 آذر 1386, 05:17 صبح
سلام
الگوریتم بازگشتی شمارش تعداد درخت با n گره
رو میخواستم
فقط الگوریتم رو هو بگین کافیه
ممنون

whitehat
جمعه 16 آذر 1386, 16:49 عصر
شما کافیه یکی از پیمایش های درخت را بروش بازگشتی پیاده سازی کنید، تابع شما باید تعداد فرزندان نود فعلی را برگرداند ، شرط خروج زمانی است که به نود برگ می رسیم و تابع باید صفر برگرداند. برای هر نود ابتدا زیر درخت چپ و سپس زیر درخت راست را پیمایش کنید و جوابهای بدست آمده را با هم جمع کنید

mahdi bg
جمعه 16 آذر 1386, 22:14 عصر
سلام
تنها چیزی که می دونونیم این که درخت ما n تا گره داره
تابعی که با دونستن n گره , تعداد درخت رو بده
مثلا 1 گره 1 درخت
2 گره 2 درخت
3 گره 6 درخت و ...

whitehat
شنبه 17 آذر 1386, 13:59 عصر
تابعی که با دونستن n گره , تعداد درخت رو بده
دوست عزیز اگه شما می خواهید ببینید با n گره چند درخت می توانید بسازید باید با استفاده از فرمول Cayley (http://en.wikipedia.org/wiki/Cayley%27s_formula) آنرا پیدا کنید و نیازی به پیمایش ندارید.
موفق باشید

mahdi bg
شنبه 17 آذر 1386, 22:26 عصر
سلام
قبلش از توجه هتون ممنون
ولی صورت سوالی که من دارم اینه
"تابعی به صورت بازگشتی بنویسید که تعداد درخت های موجود با
N گره را پیدا کند"

فکر نکنم منظور سوال استفاده از فرمول فوق باشه
راستش رو بخواهید چند وقته روش فکر می کنم و خودم هم هنوز
این که دقیقا چی میخواد ؛ نمی دونم

کسی پیشنهاد دیگه ای نداره ممنون

404_3140
پنج شنبه 22 آذر 1386, 22:48 عصر
خب مگه بازگشتی نوشتنش کاری جز این داره:؟


int f(int x){
if(x==1)
return 1;
if(x%2==0)
return 0;
int ans=0;
for(int i=1;i<x;i+=2)
ans+=f(i)*f(x-1-i);
return ans;
}