برنامه ریزی، نمرات و مباحث دروس

سوال:

یک میله فلزی به طول L متر در اختیار داریم که برخی نقاط آن جهت برش از قبل مشخص شده اند.

مغازه ای که برش را انجام می دهد به ازای هر برشی که بر روی میله فلزی به طول p متر انجام شود، فارغ از نفطه ای که می خواهد برش دهد، p دلار هزینه می گیرد. مثلاً اگر میله ای به طول 2 متر در اختیار داشته باشیم و بخواهیم نقاط با فاصله نیم متری و 1 متری از ابتدای میله را برش دهیم دو انتخاب داریم:

ابتدا نقطه نیم متری را برش بزنیم (2 دلار) و سپس یک میله به طول نیم متر داریم و میله ی دیگری به طول 1/5 متر که باید یک نقطه از آن را برش دهیم (1/5 دلار) که در کل هزینه 3/5 دلار می شود.

یا 

ابتدا نقطه 1 متری را برش می دهیم (2 دلار) و سپس یک میله به طول یک متر داریم که بایستی نقطه وسط آن بریده شود(1 دلار) و میله ی دیگری به طول 1 متر که دیگر نیازی به برش ندارد. (در کل 3 دلار)

















حال می خواهیم با ترتیبی این میله را برش دهیم که کمترین هزینه را داشته باشد.


ورودی:

فایلی به نام input.txt که در خط اول آن طول میله (L)

در خط دوم تعداد نقاطی که می خواهیم برش دهیم (n)

و در n خط بعد فاصله نقاطی که می خواهیم برش دهیم از سمت چپ میله


خروجی:

فایل به نام output.txt که در خط اول آن کمترین هزینه ممکن برای برش

و در n خط بعدی به ترتیب نقاطی که باید از ابتدا به انتها برش یابند

مثال:

input.txt:
2
2
0.5
1

output.txt:
3
1
.5


نکات:

تحویل پروژه بصورت حضوری است.

به برنامه ای که توسط خود دانشجو نوشته نشده باشد و یا کپی شده باشد، نمره ای تعلق نمی گیرد.

زمان تحویل پروژه یکشنبه 13 دی
زمان ارائه دوشنبه 14 دی

تکمیلی:
برای مثال زیر جواب برابر است با 109535.628182

  • محمد مهدی نعمت الهی

نظرات  (۹)

سلام...
استاد فقط از نقاطی که تعیین شده میشه برش زد ؟
مثلا نقاط 1و 2 رو برای برش تعیین کرده ولی میشه از یه نقطه دیگه هم برش رو انجام داد ؟
پاسخ:
سلام
فقط باید از نقاط مشخص شده (قرمز در تصویر) برش داد ولی ترتیب (و به دنبال آن هزینه) متفاوت می تواند باشد و ما ترتیبی را که به کمترین هزینه منجر می شود را نیاز داریم

  • best coder in Shahrood UT
  • با سلام و خسته نباشید
    محدوده ورودی برنامه رو مشخص کنید تا ببینیم حداکثر با چه پیچیدگی زمانی باید بنویسیم.قطعا brute force غیر قابل قبوله دیگه؟
    پاسخ:
    دقیقاً همونطور که گفتید چک کردن تمام حالات کاری عاقلانه نیست چون test case های مساله جوری انتخاب می شه که در حالت brute force جواب نمی ده
    سلام استاد
    گروه ها چند نفره هست؟امکانش هست 2 نفره باشه؟
    پاسخ:
    سلام
    پروژه ها تک نفریست
  • best coder in Shahrood UT
  • بخش‌هایی از این نظر که با * مشخص شده، توسط مدیر سایت حذف شده است
    استاد نظرتون راجعبه این dp عالی چیه؟

    ******************
    پاسخ:
    انتظار ندارید که در این جا در موردش صحبت کنیم!
    سلام استاد، امکانش هست راهنمایی کنید از چه الگوریتمی برای حل این مساله باید استفاده کنیم؟
    پاسخ:
    سلام
    هم این مساله هم پروژه اختیاری خیلی ساده شبیه الگوریتم های پویایی که سر کلاس بحث شد، قابل حلند
    (جواب کمتر از 10 خط!!)
    استاد لطفا ترتیب برشها رو هم  واسه مثالی که گذاشتید ...توسایت قرار بدین باتشکر
    پاسخ:
    مهم کمترین هزینه است
    چرا که می توان با ترتیب های متفاوت به این کمترین هزینه رسید.

    سلام خسته نباشید
    استاد اگه فقط پروژه رو بفرستیم ارائه ندیم چقدر از نمره کم میشه ؟
    پاسخ:
    سلام
    متاسفانه نمره ای دریافت نمی کنید.
    سلام استاد
    خسته نباشید
    ببخشید استاد یه سوال داشتم خدمتتون: الگوریتم فلوید گزینه مناسبی واسه حل مسئله میله؟؟؟(پیاده سازی کردم واسه مقادیر کم درست جواب میده اما واسه این نمونه مثالی که داخل وبلاگ گذاشتید(1000 تا برش) درست جواب نمیده!!!!!) 
    پاسخ:
    سلام
    باید با دلیل بگید که چرا این مسئله همان جوابی را داره که الگوریتم فلوید می ده
    استنباطتون رو بگید روی اون بحث کنیم
    امکان داره چند ترتیب برش جواب یکسان بدن به طوری که جواب هر کدام همان کمترین هزینه باشه؟
    پاسخ:
    بله، ممکنه
    ارسال نظر آزاد است، اما اگر قبلا در بیان ثبت نام کرده اید می توانید ابتدا وارد شوید.
    شما میتوانید از این تگهای html استفاده کنید:
    <b> یا <strong>، <em> یا <i>، <u>، <strike> یا <s>، <sup>، <sub>، <blockquote>، <code>، <pre>، <hr>، <br>، <p>، <a href="" title="">، <span style="">، <div align="">
    تجدید کد امنیتی