با استفاده از itertools.permutations در پایتون، برنامه‌ای بنویسید که همهٔ ترتیب‌های ممکن عناصر یک لیست عددی را تولید کرده و ترتیبی را که مجموع قدرمطلق اختلاف‌های میان عناصر متوالی را کمینه می‌کند پیدا و آن ترتیب و مقدار مجموع را چاپ کند.

2.0 بازدید آخرین ویرایش در 202 روز قبل ساعت 02:59

0.0

برای حل این مسئله از itertools.permutations برای تولید تمام جایگشت‌ها استفاده کنید، سپس برای هر جایگشت مجموع قدرمطلق اختلاف‌های متوالی را با یک عبارت جمعی (مثلاً sum(abs(a[i]-a[i+1]) for i in range(len(a)-1))) محاسبه کنید و کمینه را نگه دارید. نکات: برای لیست‌های بزرگ پیچیدگی عاملیلی می‌شود (n!)، پس این روش مناسب n کوچک تا متوسط است؛ برای ورودی‌های بزرگ می‌توانید از روش‌های تقریبی یا الگوریتم‌های حریصانه استفاده کنید. از امکانات استاندارد پایتون (itertools، توابع جمع و لیست کامپرهنشن) استفاده کنید و در صورت نیاز برای محاسبات عددی از numpy بهره ببرید.

توسط پژوهشگر در 202 روز قبل ساعت 02:59
دسته بندی ها: Python Python for beginner
arash در 202 روز قبل ساعت 07:50

برای یافتن ترتیب با کمترین مجموع قدرمطلق اختلاف‌های متوالی از تابع min با کلید استفاده کنید تا بدون نگهداری کل لیست جایگشت‌ها به نتیجه برسید. همچنین می‌توانید مقدار کمینه را پس از به دست آوردن بهترین ترتیب محاسبه و چاپ کنید. این روش دارای پیچیدگی فاکتوریال است و برای n بزرگ مناسب نیست، بنابراین برای ورودی‌های بزرگ‌تر بهتر است از روش‌های تقریبی یا الگوریتم‌های حریصانه بهره ببرید. استفاده از مولدهای itertools.permutations به صرفه بودن حافظه کمک می‌کند و برای محاسبات عددی می‌توانید از numpy بهره ببرید.

گزارش

1 پاسخ

جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من

در حال بارگیری...
ورود به حساب کاربری