تبليغات
تبلیغات در دانشجو کلوب محک :: موسسه خيريه حمايت از کودکان مبتلا به سرطان ::
جستجوگر انجمن.براي جستجوي مطالب دانشجو کلوپ مي توانيد استفاده کنيد 
برای بروز رسانی تاپیک کلیک کنید
 
امتیاز موضوع:
  • 1 رأی - میانگین امتیازات: 5
  • 1
  • 2
  • 3
  • 4
  • 5

الگوریتم کوله پشتی پویا به زبان c

نویسنده پیام
  • navid
    آفلاین
  • مدیر بازنشسته
    **
  • ارسال‌ها: 1,344
  • تاریخ عضویت: مرداد ۱۳۹۰
  • اعتبار: 85
  • تحصیلات:لیسانس
  • علایق:برنامه نویسی
  • محل سکونت:Istanbul, Turkey
  • سپاس ها 1152
    سپاس شده 3031 بار در 1139 ارسال
  • امتیاز کاربر: 27,279$
  • حالت من:حالت من
ارسال: #1
الگوریتم کوله پشتی پویا به زبان c

کد:
#include <stdio.h>

#define MAXWEIGHT 100

int n = 3; /* The number of objects */
int c[10] = {8, 6, 4}; /* c[i] is the *COST* of the ith object; i.e. what
				YOU PAY to take the object */
int v[10] = {16, 10, 7}; /* v[i] is the *VALUE* of the ith object; i.e.
				what YOU GET for taking the object */
int W = 10; /* The maximum weight you can take */ 

void fill_sack() {
	int a[MAXWEIGHT]; /* a[i] holds the maximum value that can be obtained
				using at most i weight */
	int last_added[MAXWEIGHT]; /* I use this to calculate which object were
					added */
	int i, j;
	int aux;

	for (i = 0; i <= W; ++i) {
		a[i] = 0;
		last_added[i] = -1;
	}

	a[0] = 0;
	for (i = 1; i <= W; ++i)
		for (j = 0; j < n; ++j)
			if ((c[j] <= i) && (a[i] < a[i - c[j]] + v[j])) {
				a[i] = a[i - c[j]] + v[j];
				last_added[i] = j;
			}

	for (i = 0; i <= W; ++i)
		if (last_added[i] != -1)
			printf("Weight %d; Benefit: %d; To reach this weight I added object %d (%d$ %dKg) to weight %d.\n", i, a[i], last_added[i] + 1, v[last_added[i]], c[last_added[i]], i - c[last_added[i]]);
		else
			printf("Weight %d; Benefit: 0; Can't reach this exact weight.\n", i);

	printf("---\n");

	aux = W;
	while ((aux > 0) && (last_added[aux] != -1)) {
		printf("Added object %d (%d$ %dKg). Space left: %d\n", last_added[aux] + 1, v[last_added[aux]], c[last_added[aux]], aux - c[last_added[aux]]);
		aux -= c[last_added[aux]];
	}

	printf("Total value added: %d$\n", a[W]);
}

int main(int argc, char *argv[]) {
	fill_sack();

	return 0;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54



مطالب مشابه ...

تن آدمی شریف است به جیب آدمیت و همین لباس زیباست نشان آدمیت !

۲۴-۷-۱۳۹۰ ۱۱:۵۳ عصر
جستجو یافتن همه ارسال های کاربر اهدا امتیازاهدای امتیاز به کاربر پاسخ پاسخ با نقل قول
 سپاس شده توسط senior engineer ، ♔ αϻἰг κнаη ♔ ، nargesi ، shahzadeye gheseha
  • nargesi
    آفلاین
  • کاربرسایت
  • ارسال‌ها: 1
  • تاریخ عضویت: خرداد ۱۳۹۱
  • اعتبار: 0
  • تحصیلات:لیسانس
  • علایق:
  • محل سکونت:
  • سپاس ها 1
    سپاس شده 1 بار در 1 ارسال
  • امتیاز کاربر: 0$
  • حالت من:حالت من
ارسال: #2
RE: الگوریتم کوله پشتی پویا به زبان c
Clapping
خیلی عالیه
من متعجب شدم شما تحصیلاتتون زیر دیپلمه و این برنامه رو نوشتین

۱۰-۳-۱۳۹۱ ۰۴:۱۹ عصر
جستجو یافتن همه ارسال های کاربر اهدا امتیازاهدای امتیاز به کاربر پاسخ پاسخ با نقل قول
 سپاس شده توسط senior engineer

برای بروز رسانی تاپیک کلیک کنید


مطالب مشابه ...
موضوع: نویسنده پاسخ: بازدید: آخرین ارسال
  الگوریتم پریم به زبان c navid 0 1,679 ۲۵-۷-۱۳۹۰ ۰۸:۰۸ عصر
آخرین ارسال: navid

پرش به انجمن:

کاربرانِ درحال بازدید از این موضوع: 1 مهمان