در این مطلب، ویدئو آموزش تغییر ایجاد مشکل – مقدمه ای بر برنامه نویسی پویا با پایتون 3 با زیرنویس فارسی را برای دانلود قرار داده ام. شما میتوانید با پرداخت 15 هزار تومان ، این ویدیو به علاوه تمامی فیلم های سایت را دانلود کنید.اکثر فیلم های سایت به زبان انگلیسی می باشند. این ویدئو دارای زیرنویس فارسی ترجمه شده توسط هوش مصنوعی می باشد که میتوانید نمونه ای از آن را در قسمت پایانی این مطلب مشاهده کنید.
مدت زمان فیلم: 00:12:20
تصاویر این ویدئو:
قسمتی از زیرنویس این فیلم:
00:00:00,350 –> 00:00:07,990
[موسیقی]
2
00:00:09,019 –> 00:00:11,610
سلام همه به یک ویدیوی دیگر خوش آمدید
3
00:00:11,610 –> 00:00:13,950
و این موردی که ما به آن خواهیم پرداخت،
4
00:00:13,950 –> 00:00:16,020
مشکل معمولی علم کامپیوتر است که چگونه
5
00:00:16,020 –> 00:00:18,000
می توان با توجه به
6
00:00:18,000 –> 00:00:19,619
مقدار تغییری که نیاز دارید و
7
00:00:19,619 –> 00:00:21,420
سکه هایی که می توانید آن را انجام دهید، یک تغییر بهینه ایجاد کنید. این کار را
8
00:00:21,420 –> 00:00:23,039
ابتدا با سکه های استاندارد انجام دهید و سپس
9
00:00:23,039 –> 00:00:24,420
به نحوه تغییر مجموعه سکه ها نگاه می کنیم،
10
00:00:24,420 –> 00:00:25,800
اجازه دهید شروع کنیم،
11
00:00:25,800 –> 00:00:27,900
بنابراین اگر می خواهید به عنوان یک توسعه دهنده استخدام شوید،
12
00:00:27,900 –> 00:00:29,429
مشکل ایجاد تغییر چیست، مشکل ایجاد تغییر یک سوال مصاحبه معمولی است.
13
00:00:29,429 –> 00:00:30,840
14
00:00:30,840 –> 00:00:32,850
کاری که از
15
00:00:32,850 –> 00:00:34,800
شما می خواهد این است که الگوریتمی ایجاد کنید که
16
00:00:34,800 –> 00:00:36,480
مقدار بهینه سکه
17
00:00:36,480 –> 00:00:39,210
ها را برای مجموعه ای از مثال های تغییر
18
00:00:39,210 –> 00:00:41,219
به شما بازگرداند، این است که اگر به 4 سنت نیاز داشتید، اگر 6 سنت داشتید،
19
00:00:41,219 –> 00:00:42,930
4 سکه به ازای چهار سکه برگردانید.
20
00:00:42,930 –> 00:00:45,210
21
00:00:45,210 –> 00:00:47,039
دو سکه برای یک نیکل و یک پنی برگردانید،
22
00:00:47,039 –> 00:00:48,899
بنابراین بیایید ببینیم چگونه میتوانیم
23
00:00:48,899 –> 00:00:50,340
الگوریتمی ایجاد کنیم که ابتدا آن مقدار
24
00:00:50,340 –> 00:00:52,230
سنت را بگیرد و سپس
25
00:00:52,230 –> 00:00:54,030
مقدار بهینه سکه را به ما برگرداند، این کار را
26
00:00:54,030 –> 00:00:55,949
ابتدا با سکههای استاندارد ایالات متحده انجام دهید، بنابراین
27
00:00:55,949 –> 00:00:59,280
مقادیر 1. 5 10 و 25 اما بعد از آن
28
00:00:59,280 –> 00:01:00,690
نگاه خواهیم کرد که چگونه می توانیم این کار را با
29
00:01:00,690 –> 00:01:02,730
هر مقدار سکه و هر سکه ای انجام دهیم،
30
00:01:02,730 –> 00:01:04,559
یک ویرایشگر متن باز می کنیم و برای انجام این کار
31
00:01:04,559 –> 00:01:06,390
با سکه های استاندارد تنها چیزی که باید
32
00:01:06,390 –> 00:01:07,890
اعمال کنیم چیزی به نام روش حریص است.
33
00:01:07,890 –> 00:01:09,750
این روش میگوید این است که
34
00:01:09,750 –> 00:01:11,520
ابتدا باید بالاترین مقادیر سکه را بگیریم و
35
00:01:11,520 –> 00:01:13,530
ببینیم که آیا به کل
36
00:01:13,530 –> 00:01:15,720
تغییری که نیاز داریم وارد میشود یا خیر، سپس
37
00:01:15,720 –> 00:01:17,850
به سکه بعدی پایین میرویم و به همین ترتیب اگر
38
00:01:17,850 –> 00:01:19,140
میخواهید سعی کنید آن را حل کنید. این مشکل
39
00:01:19,140 –> 00:01:21,180
به تنهایی ویدیو را در اینجا مکث کنید و
40
00:01:21,180 –> 00:01:23,670
سپس برای راه حل برگردید راه حل
41
00:01:23,670 –> 00:01:25,500
با سکه های استاندارد چیزی
42
00:01:25,500 –> 00:01:26,009
شبیه به این خواهد بود،
43
00:01:26,009 –> 00:01:28,979
ما می گوییم DF برای اعلام یک تابع و
44
00:01:28,979 –> 00:01:30,270
سپس می گوییم تابع ما تعداد سکه ها نامیده می شود
45
00:01:30,270 –> 00:01:32,189
و اکنون تنها
46
00:01:32,189 –> 00:01:33,630
پارامتری که این تابع باید
47
00:01:33,630 –> 00:01:35,579
دریافت کند، کل مقدار تغییری است
48
00:01:35,579 –> 00:01:37,650
که باید برگردانید، ما
49
00:01:37,650 –> 00:01:39,360
این متغیر را صدا می زنیم، زیرا یک دونقطه
50
00:01:39,360 –> 00:01:41,280
و کشویی می گذاریم و سپس می گوییم
51
00:01:41,280 –> 00:01:44,070
سکه های در دسترس ما در یک لیست 25 خواهد بود
52
00:01:44,070 –> 00:01:48,180
برای 1/4 10 5 و 1 بعدی ما به جلو می رویم
53
00:01:48,180 –> 00:01:50,430
و کوو می سازیم متغیر nt و آن را
54
00:01:50,430 –> 00:01:51,390
برابر 0 قرار دهید،
55
00:01:51,390 –> 00:01:52,950
ما فقط از این متغیر برای
56
00:01:52,950 –> 00:01:54,299
شمارش کل سکه هایی که باید
57
00:01:54,299 –> 00:01:56,070
برگردانیم استفاده می کنیم، همانطور که در اینجا این کار را انجام می دهیم
58
00:01:56,070 –> 00:01:58,170
و همچنین از یک حلقه for استفاده کنید، احتمالاً
59
00:01:58,170 –> 00:01:59,939
راه های بهتری برای انجام این کار وجود دارد. این اما یک
60
00:01:59,939 –> 00:02:01,680
راه ساده برای توضیح این است که از یک حلقه for استفاده کنید،
61
00:02:01,680 –> 00:02:04,950
بنابراین می گوییم برای coin و
62
00:02:04,950 –> 00:02:07,890
coins یک دونقطه قرار دهید و رها کنید و اکنون
63
00:02:07,890 –> 00:02:10,669
از حلقه while استفاده می کنیم، بنابراین خوب می گوییم
64
00:02:10,669 –> 00:02:13,709
زیرا این متغیر در اینجا
65
00:02:13,709 –> 00:02:15,569
I است. ‘m بزرگتر یا مساوی مقدار سکه
66
00:02:15,569 –> 00:02:18,480
خواهد گفت since برابر است با شما
67
00:02:18,480 –> 00:02:22,650
از آنجا که – سکه و سپس تعداد ما یک افزایش می یابد
68
00:02:22,650 –> 00:02:25,439
بنابراین تعداد برابر با شمارش به علاوه یک است
69
00:02:25,439 –> 00:02:27,569
بنابراین آنچه ما می گوییم این است که در حالی که
70
00:02:27,569 –> 00:02:29,519
مقدار کل تغییر است بالاتر از
71
00:02:29,519 –> 00:02:31,470
ارزش سکه خوب فقط آن
72
00:02:31,470 –> 00:02:34,200
مقدار تغییر را در نظر بگیرید – آن را با مقدار آن سکه
73
00:02:34,200 –> 00:02:36,269
و سپس یک سکه حساب تارا اضافه کنید و
74
00:02:36,269 –> 00:02:38,430
سپس وقتی آن مقدار تغییر
75
00:02:38,430 –> 00:02:40,560
دیگر از مقدار سکه بیشتر نباشد،
76
00:02:40,560 –> 00:02:42,450
فقط به سکه بعدی می رویم و لیست سکههای ما،
77
00:02:42,450 –> 00:02:44,040
زیرا میخواهیم تابع ما
78
00:02:44,040 –> 00:02:46,349
تعداد کل سکهها را برگرداند یا
79
00:02:46,349 –> 00:02:49,489
کشویی و d-end i T را بالا می بریم و می گوییم بازگشت
80
00:02:49,489 –> 00:02:53,220
count زیرا متغیر count همان چیزی
81
00:02:53,220 –> 00:02:54,659
است که تعداد سکه هایی را که به آن نیاز داریم می شمرد،
82
00:02:54,659 –> 00:02:57,030
بیایید آن را آزمایش کنیم، پایین می آید
83
00:02:57,030 –> 00:03:00,930
و می گوییم سکه های شماره گذاری شده چاپ کنید و سپس
84
00:03:00,930 –> 00:03:03,480
اجازه دهید در هشت سنت پاس کنیم، یک ترمینال را باز می کنم
85
00:03:03,480 –> 00:03:05,569
و آن را تایپ می کنیم. Python 30 و
86
00:03:05,569 –> 00:03:08,430
استاندارد coin stop pie نام
87
00:03:08,430 –> 00:03:11,280
اسکریپت من است که به خوبی اجرا شده است و می بینیم که ما
88
00:03:11,280 –> 00:03:13,139
چهار سکه دریافت می کنیم بنابراین یک
89
00:03:13,139 –> 00:03:15,209
نیکل و سی پنی خواهیم داشت. اجازه دهید
90
00:03:15,209 –> 00:03:18,690
این را به 11 تغییر دهیم و اکنون وقتی ذخیره و اجرا می
91
00:03:18,690 –> 00:03:21,780
کنیم باید دو تا دریافت کنیم که انجام می دهیم. و سپس
92
00:03:21,780 –> 00:03:24,480
یک بار دیگر آن را امتحان می کنیم، می گوییم 32
93
00:03:24,480 –> 00:03:27,239
ذخیره می کنیم و اجرا می کنیم و یک چهارم
94
00:03:27,239 –> 00:03:29,129
یک نیکل و دو پنی دریافت می کنیم که این
95
00:03:29,129 –> 00:03:30,750
الگوریتم هر زمانی که شما یک
96
00:03:30,750 –> 00:03:32,669
سیستم تغییر متعارف دارید کار می کند و این به
97
00:03:32,669 –> 00:03:34,079
نوعی به این معنی است که ساخته شده است. برای کار به
98
00:03:34,079 –> 00:03:35,760
این روش، اما اگر یک
99
00:03:35,760 –> 00:03:37,290
سیستم تغییر متفاوت دارید که غیر
100
00:03:37,290 –> 00:03:39,209
متعارف است، چه میشود، بیایید ببینیم چگونه
101
00:03:39,209 –> 00:03:41,489
الگوریتم مشابهی را با استفاده از
102
00:03:41,489 –> 00:03:43,319
مقادیر سکهای که خودمان میسازیم بسازیم، ادامه میدهم
103
00:03:43,319 –> 00:03:45,389
و یک اسکریپت جدید باز میکنم و اکنون
104
00:03:45,389 –> 00:03:46,829
برای حل این موضوع یکی و ما روشن می شویم
105
00:03:46,829 –> 00:03:48,959
کمی چالش برانگیزتر آنچه ما باید
106
00:03:48,959 –> 00:03:50,729
استفاده کنیم مفهومی به نام برنامه
107
00:03:50,729 –> 00:03:52,799
نویسی پویا برنامه است فقط به این معنی است
108
00:03:52,799 –> 00:03:54,479
که یک مشکل بزرگ را در نظر می گیریم و آن را
109
00:03:54,479 –> 00:03:56,639
به زیر مجموعه های آن مشکل تقسیم می کنیم و
110
00:03:56,639 –> 00:03:58,349
این مشکل را به چندین زیرمسئله تقسیم
111
00:03:58,349 –> 00:04:00,239
می کنیم و چگونه می توانیم این کار را انجام دهیم ما باید
112
00:04:00,239 –> 00:04:01,889
یک ماتریس ایجاد کنیم که
113
00:04:01,889 –> 00:04:03,989
راه های ممکن برای بدست آوردن مقدار با استفاده از
114
00:04:03,989 –> 00:04:05,849
هر سکه را طی کند، اما ابتدا باید
115
00:04:05,849 –> 00:04:07,650
آن ماتریس را ایجاد کنیم تا بتوانیم بعداً آن را بهینه
116
00:04:07,650 –> 00:04:10,829
کنیم، این کار را با گفتن DF انجام می
117
00:04:10,829 –> 00:04:13,680
دهیم و زیر خط می زنیم و ماتریس را تغییر دهید و
118
00:04:13,680 –> 00:04:16,339
این باید در مجموعه سکه گرفته شود و
119
00:04:16,339 –> 00:04:19,949
سپس مقدار تغییر را یک دونقطه میگذارم
120
00:04:19,949 –> 00:04:21,839
و پایین میآورم، سپس باید
121
00:04:21,839 –> 00:04:23,789
متغیری به نام ماتریس ایجاد کنیم و فقط باید
122
00:04:23,789 –> 00:04:25,650
برای هر مقدار در این ماتریس یک مکان نگهدار قرار دهیم.
123
00:04:25,650 –> 00:04:26,920
بنابراین
124
00:04:26,920 –> 00:04:28,480
ما دو براکت قرار می دهیم و می
125
00:04:28,480 –> 00:04:30,490
گوییم مقدار مکان یاب شما صفر است و
126
00:04:30,490 –> 00:04:36,010
این کار را برای M و محدوده مقدار تغییر
127
00:04:36,010 –> 00:04:38,560
به اضافه 1 انجام می دهیم، بنابراین تابع محدوده
128
00:04:38,560 –> 00:04:40,720
آخرین عدد مقدار تغییر را شامل نمی شود
129
00:04:40,720 –> 00:04:42,100
، به همین دلیل است که اکنون یکی را
130
00:04:42,100 –> 00:04:44,650
در اینجا اضافه می کنم این یک ماتریس است که
131
00:04:44,650 –> 00:04:46,690
طول مقدار تغییر وجود دارد، اکنون باید
132
00:04:46,690 –> 00:04:48,670
برای هر یک از سکه های خود یک ردیف اضافه کنیم،
133
00:04:48,670 –> 00:04:51,810
می توانیم این کار را با گفتن دیگری برای M
134
00:04:51,810 –> 00:04:55,840
در محدوده طول مجموعه سکه
135
00:04:55,840 –> 00:05:00,910
انجام دهیم و سپس +1 را انجام می دهیم. بنابراین آنچه میگوییم این
136
00:05:00,910 –> 00:05:02,950
است که ماتریسی میخواهیم
137
00:05:02,950 –> 00:05:05,980
که طول ردیف را بهعنوان محدودهای از مقدار تغییر داشته باشد،
138
00:05:05,980 –> 00:05:08,200
بنابراین مقدار تغییر شما هر چه
139
00:05:08,200 –> 00:05:09,400
باشد طول هر
140
00:05:09,400 –> 00:05:11,860
سطر جداگانه خواهد بود و سپس ردیفهایی که
141
00:05:11,860 –> 00:05:13,690
ماتریس دیگر میخواهیم فقط
142
00:05:13,690 –> 00:05:16,150
پیوند یک مجموعه سکه به اضافه یک باشد، بنابراین هر
143
00:05:16,150 –> 00:05:17,890
تعداد سکه ای که در لیست سکه های خود مشخص کرده ایم
144
00:05:17,890 –> 00:05:19,660
، دارای این تعداد سطر در
145
00:05:19,660 –> 00:05:21,730
ماتریس به اضافه یک باشد، به این دلیل است که ما
146
00:05:21,730 –> 00:05:23,980
باید یک ردیف پیش فرض در ماتریس خود ایجاد کنیم،
147
00:05:23,980 –> 00:05:26,230
می توانیم این سطر پیش فرض را با گفتن این جمله ایجاد کنیم. برای
148
00:05:26,230 –> 00:05:30,780
I در محدوده مقدار تغییر ما به اضافه یک،
149
00:05:30,780 –> 00:05:33,280
بنابراین برای هر مقدار گفته می شود و
150
00:05:33,280 –> 00:05:35,380
یکی از ردیف های داده شده پایین می آید
151
00:05:35,380 –> 00:05:38,020
و می گوید ماتریس ما اولین ردیف ماتریس را مشخص می کند
152
00:05:38,020 –> 00:05:39,670
و ما می توانیم این کار را
153
00:05:39,670 –> 00:05:41,500
با استفاده از یک صفر در پرانتز انجام دهیم و
154
00:05:41,500 –> 00:05:43,630
سپس می توانیم مقادیر فردی
155
00:05:43,630 –> 00:05:46,060
را با استفاده از آن مشخص کنیم متغیر بالایی که
156
00:05:46,060 –> 00:05:48,580
در اینجا نشان دادیم اکنون می گوییم برای
157
00:05:48,580 –> 00:05:50,710
هر مقدار در ردیف اول
158
00:05:50,710 –> 00:05:53,230
ماتریس ما می خواهیم آن مقا