PDA

View Full Version : سوال: انجام یک محاسبات ریاضی



Site Admin
یک شنبه 25 دی 1390, 11:47 صبح
با سلام من در برنامه ای به حل محاسبه زیر نیاز دارم
در این مساله ما 40 عدد تصادفی داریم و یک عدد مورد نظر
حال میخواهیم چند عدد را از 40 عدد با هم جمع کنیم که نتیجه برابر عدد مورد نظر باشد
مثال
1000
1500
2000
2300
2400
2007
4800
1800
و تا 40 عدد

عدد مورد نظر = 4500
جواب = جمع اعداد 1000+1500+2000 میشود عدد مورد نظر شما

Mask
یک شنبه 25 دی 1390, 12:14 عصر
راحتترین راه استفاده از چند حلقه تو در تو است.
دونه دونه اعداد رو با هم جمع کن اگه به جواب نرسیدی ، برو عدد بعدی.

maktoom
دوشنبه 26 دی 1390, 00:59 صبح
سلام
کارت رو با الگوریتم مشخصی انجام بده. من اینو پیشنهاد می کنم.
اول اعداد رو دو به دو با هم جمع کن. مثل جستجوی دودویی. بعد اون زوج هایی رو که جمعشون از عدد نهایی بیشتر شده بود رو حذف کن.
و هر زوجی که جمع بشن دیگه حق نداری از این دو عدد در جمع بعدی استفاده کنی. پس باید اندیس ها هم ذخیره بشه.
یه آرایه دو بعدی که در هر دو خونه متوالی اعداد انتخاب شدتن که در بعد دوم اندیسشون قرار گرفته. در انتخاب عدد سوم برای جمع با این دو عدد باید از غیر از این اندیس ها در آرایه اصلیت استفاده کنی.

Site Admin
دوشنبه 26 دی 1390, 07:53 صبح
با سلام و تشکر از دوستان به نظر شما (اگر یک آرایه تعریف کنیم از اعداد و با یک تابع به طور مثال 5 عدد رندوم از اندیس آرایه انتخاب کنم و محتوای اندیسهای انتخابی رو جمع کنم و اگر به عدد مورد نظر نرسیدم دوباره این کار رو انجام بدم تا به عدد مورد نظر برسم )خوبه

Mask
دوشنبه 26 دی 1390, 08:32 صبح
چرا 5 عدد؟
شما دوتا دوتا بیار تو آرایت.
در ضمن اون دوست عزیز هم پیشنهاد خوبی دادند برای اینکه اعدادی که بزرگتر از جمع دودویی میشند رو کلا حذف کنید.

maktoom
دوشنبه 26 دی 1390, 15:28 عصر
برای جاهاییکه مثل این استفاده از تابع رندوم میتونه نتایج غیر قابل پیش بینی ببار بیاره که بهتره بنظر من استفاده نکنی.
فرض کن یه آرایه داری با 1 میلیون خونه حالا حساب کن رندوم میتونه چه تاثیری داشته باشه.
یه کاری باید بکنی زیادی ها برن کنار. غربال باید بشن.

Site Admin
دوشنبه 26 دی 1390, 15:46 عصر
با تشکر از تمام دوستان راستش رو بخوانین یه مشتری این کد رو از من خواسته و نگفته کجا میخواد استفاده کنه فقط گفته یک تعداد عدد به طور مثال 40 تا و یک عدد مورد نظر داریم حالا من میخوام بدونم آیا میشه 5 عدد رو در این 40 عدد پیدا کنم که جمعشون با عدد مورد نظر من یکی بشه یا نه اگر نه پیغام بده 5 عدد پیدا نشد حالا شش عدد یا کمتر را انتخاب کنه

BORHAN TEC
دوشنبه 26 دی 1390, 17:25 عصر
نوشتن این برنامه کاری نداره، متاسفانه وقت کافی ندارم والا خودم برنامش رو می نوشتم. به عنوان راهنمایی باید بگم که برای نوشتن چنین برنامه هایی می توانید از Greedy Algorithm و به عبارتی فارسی "الگوریتم های حریصانه" استفاده کنید. در آخر هم پیشنهاد می کنم که سوال خود را در این بخش مطرح کنید:
http://barnamenevis.org/forumdisplay.php?40-%D8%A7%D9%84%DA%AF%D9%88%D8%B1%DB%8C%D8%AA%D9%85%D 8%8C-%DA%A9%D8%A7%D9%85%D9%BE%D8%A7%DB%8C%D9%84%D8%B1%D 8%8C-%D9%87%D9%88%D8%B4-%D9%85%D8%B5%D9%86%D9%88%D8%B9%DB%8C-%D9%88-%D8%B3%D8%A7%D8%AE%D8%AA%D9%85%D8%A7%D9%86-%D8%AF%D8%A7%D8%AF%D9%87-%D9%87%D8%A7