در مثلث مجموع هر دو ضلع، بزرگتر از ضلع سوم است. در مثلث هر ضلع، بزرگتر از تفاضل بین دو ضلع دیگر است.
در مثلث مجموع هر دو ضلع، بزرگتر از ضلع سوم است. در مثلث هر ضلع، بزرگتر از تفاضل بین دو ضلع دیگر است.
سلام یکی از مهمترین مباحث الگوریتم و برنامه نویسی داینامیک هستش و کلا چیز مهمیه به قول یکی از اساتید المپیاد کامپیوتر دانش آموزی دانشگاه جورجیا تک آمریکا "داینامیک آنقدر برای طراح اونجا مهم بوده از 8 تا سوال برنامه نویسی 6 تا داینامیک بوده کلا عاشق داینامیک بوده!! ".
اول باید دید که داینامیک اصلا چیست؟ داینامیک حل یک مسئله برنامه نویسی با یک رابطه ی بازگشتی است در واقع شما سعی می کنید استقرا بزنید سعی می کنید که حل مسئله برای رو از روی بدست بیارید.
اگر تشخیص دادید که یه مسئله دینامیک هست (کار ساده ای نیست) باید سه مرحله رو بگزرانید تا مسئله رو حل کنید:
1 .DP state رو حدس بزنید در واقع بیایید اون آرایه ای که می خواهید در اون اعضای دنباله ی بازگشتی رو ذخیره کنید رو تعریف کنید. مثلا بعضی وقتا یک بعدیه بعضا دو بعدی و ...
2 . حالت پایه رو بدست آورید یعنی جواب سوال رو برای 0 یا 1 و ...
3 . ضابطه ی دنباله ی بازگشتی رو بدست آورید کار سختیه اما با تمرین زیاد سختیش میاد پایین ولی هیچ وقت راحت نمیشه!
نکته ی مهم و اساسی : توی یه سوال اگه خواستید داینامیک بزنید باید ببنید که چیزی داره تکرار میشه حالا تو سوالات بهتر این پدیده رو خواهید دید.
تو این سوال می خوام 10 تا سوال !! مطرح کنم که شامل سوالات معروف و .. داینامیک هستند:
1 . n امین عدد دنباله ی فیبوناچی را بدست آورید (خیلی خیلی ساده)
2 . n را از ورودی بگیر و تعداد راهای نوشتن آن با اعداد 1 و 3 و4 را بدست آورید (ساده) مثلا عدد 5 را می توان به 5 روش نوشت.
3 . دنباله ای داریم از n عدد صحیح (مثبت و منفی) بزرگترین زیر آرایه متوالی با بیشرترین مجموع را بیابید.(ساده و معروف)
4 . دنباله ای داریم از n عدد صحیح (مثبت و منفی) طول بزگترین زیر دنباله ی صعودی را بیابیید.(ساده و معروف)
5 . فردی دارای n نوع سکه است و می خواهد اسکناس k تومانی خود را با این سکه ها خرد کند. کمترین تعداد سکه های لازم را بیابیید. ابتدا n را دریافت کرده و سپس n نوع سکه را دریافت کرده و k را دریافت کنید.(ساده و معروف)
6 . تعداد راهای پوشاندن یک جدول در 3 را با دومینو را بیابیید .(POJ 2663 ) (متوسط ) یک حالت برای n=12
7 . مسئله ی کوله پشتی : n شئ داریم با وزن های متفاوت و با ارزش های متفاوت و یک کیف که دارای ظرفیت k کیلو است می خواهیم تعدادی از این اشیا را ورداریم که وزن آن از ظرفیت کیف بیشتر نشود و مجموع ارزش بیشینه شود.(متوسط و معروف)
8 . مثلثی مانند شکل زیر داریم که دارای n لایه است می خواهیم مسیری از قله ی مثلث تا پایین انتخاب کنیم که مجموع اعداد آن بیشینه شود آن عدد را چاپ کنید.(شکل) هر عدد می تواند به دو عدد مجاور خود برود.ابتدا n را دریافت و مثلث را دریافت کنید.(شبیه به سوال 3 مرحله 3 دوره ی 23 روز دوم که 40 امتیازی از 100 امتیاز رو تشکیل می داد)(متوسط)
9 . مجموعه ای داریم از n عضو تعداد زیر مجموعه های از آن که مجموع اعضای آن برابر با c باشدرا بیابیید.(متوسط به بالا)
10 . در یک کشور که دارای 2n شهر است و دارای یک رود می باشد متاسفانه این رود از وسط کشور رد شده است به گونه ای که n شهر در یک طرف و n شهر دیگر در طرف دیگر قرارگرفته است به همین دلیل رئیس جمهور آن کشور تصمیم گرفته که بین مجموعه ی A , B از شهرها پل احداث کنیم . هر شهر فقط می تواند با شهری پل داشته باشد که با آن هم جمعیت باشد . هر شهر می تواند با شهر دیگر پل داشته اگر با پلی دیگر برخورد نکند. حداکثر این کشور چند پل می تواند داشته باشد.ابتدا n را دریافت کن سپس دو دنباله ی n عضوی از جمعیت شهر های A و B دریافت کن که جمعیت شهرهای A و B را به ترتیب در آن دو دنباله دارد.نکته : میدانیم هر شهر در پایین با یک شهر با بالا هم جمعیت است.حداکثر چند پل می تواند احداث شود.(متوسط)
participated شرکت
organizer تنظیم کننده
arranging سامان دادن
Foreword پیش گفتار
responsible مسئولیت
recollection خاطره
tutorials آموزش
author نویسنده
prefaceمقدمه
essential ضروری
sections بخش
scattered پراکنده
newcomers تازه واردان
proves ثابت میکند
tips نکات
considered در نظر گرفته
experience تجربه
manual کتابچه راهنما
interesting جالب هست
classification تقسیم بندی
categoriesدسته بندی ها
detail جزئیات
1104
several چند
specifying تعیین
Howeverبا این حال
1185
skewانحراف
decimalاعشاری
expressed ابراز
represents نشان دهنده
multiple چندین
least کمترین
significant قابل توجه
useful مفید
current problemمشکل فعلی،مشکل جاری
carryحمل
each of which هر یک از انها
otherwiseدر غیر اینصورت
equivalentمعادل
1099
Bricks اجر
upon بر
sameیکسان
retorts جواب متقابل دادن
rearrange تنظیم مجدد
1088
Saturnزحل
crew خدمه
stasis حالت سکون
awakeبیدار
strangelyعجیب
even حتی
released منتشر شد
popularمحبوب
became شد
discussion بحث
actually در واقع
meant به معنای
Heuristic ALgorithmالگوریتم ابتکاری
abbreviation مخفف
explanation توضیح
replace جایگزین کردن
successor جانشین
acronyms کلمات اختصاری
related مربوط
1208
reversal معکوس
multiple چندین
indicated نشان داد
descriptionشرح
indicating نشان میدهد
1228
infinityبینهایت
actually درواقع
yield بازده
accurate دقیق
1230
root ریشه
resulting نتیجه
continued ادامه یافت
obtain بدست اوردن
consider درنظر گرفتن
yields حاصل،محصول
Since از انجا که
separate جداگانه
1959
Given داده
determine تعیین کردن
least کمترین
alternativelyمتناوبا
representing نمایندگی
task وظیفه
1353
figure شکل
respectively به ترتیب
pattern الگو
coordinates مختصات
1266
representation نمایندگی
significant قابل توجه
Task وظیفه
which for each که برای هر
binary representation نمایش دودویی
equal برابر
increasing افزایش
sequence توالی
separated جدا ازهم
2703
abnormal غیر طبیعی
participating شرکت کننده
common مشترک
common method روش متداول
combination ترکیب
initials of team حروف اول از تیم
instance مثال
Instead به جای
stylish خوش استیل
further بیشتر
middle وسط
Thereforeاز این رو
Note توجه داشته باشید
fixed ثابت
unique منحصربه فرد
Given داده،معین،معلوم
lowercase حروف کوچک
guaranteed تضمین
2212
frosh جدید الورود
expect انتظار
provide ارائه
reality واقعیت
percentage درصد
2090
devised ابداع
encryption رمزگذاری
technique تکنیک
generated تولید
clever باهوش
intentionally از قصد،عمدا
blank جای خالی
extraordinaryخارق العاده
exciting هیجان انگیز
developments تحولات
hierarchyسلسه مراتب
leading پیشرو منتهی شد
environment محیط
Introduction معرفی
Organization سازمان
int num; boolean isPrime; num = 14; if(num < 2) isPrime = false; else isPrime = true; for(int i=2; i <= num/i; i++) { if((num % i) == 0) { isPrime = false; break; } }
دو تا حلقه ساده برا ارایه ها ولی نکته جالبی دارن:
class TwoDAgain {
public static void main(String args[]) {
int twoD[][] = new int[4][];
twoD[0] = new int[1];
twoD[1] = new int[2];
twoD[2] = new int[3];
twoD[3] = new int[4];
int i, j, k = 0;
for(i=0; i<4; i++)
for(j=0; j<i+1; j++) {
twoD[i][j] = k;
k++;
}
for(i=0; i<4; i++) {
for(j=0; j<i+1; j++)
System.out.print(twoD[i][j] + " ");
System.out.println();
}
}
}
class TwoDArray {
public static void main(String args[]) {
int twoD[][]= new int[4][5];
int i, j, k = 0;
for(i=0; i<4; i++)
for(j=0; j<5; j++) {
twoD[i][j] = k;
k++;
}
for(i=0; i<4; i++) {
for(j=0; j<5; j++)
System.out.print(twoD[i][j] + " ");
System.out.println();
}
}
}
با مفهموم صفر و یک که آشنا هستین؟!
هر بیت میتونه ارزش درست یا غلط(یک یا صفر)داشته باشه
و بیت ها کنار هم مفاهیم جدیدی ایجاد میکنن که میشه شالوده کامپیوتر
با همین صفر و یک کار های خیلی بزرگی انجام شده ولی دراین منطق همه چیز یا درسته یا غلط یا سفیده یا سیاه و چیزی بین اینها وجود نداره
سال 1965 یک دانشمند برق ایرانی تبار نظریه منطق فازی رو مطرح میکنه.مثلا اگه صفر رو معادل نریم و یک رو معادل بریم در نظر بگیریم طبق منطق فازی حالت های میان فازی هم میتونه وجود داشته باشه مثلا:احتمالا بریم،اگر بارون بیاد نریم و .....
و این باعث تحول عجیبی شد
طبق منطق قدیم مثلا میگفتن کسی که بالای 180سانت قد داره قد بلند هست(یک)وکسی که زیر 180 سانت هست قدکوتاهه(صفر)و مثلا یه 179 سانتی کوتاه حساب میشد اما طبق منطق فازی هر کدوم از اینا جایگاه خودشونو دارن
توی هوش مصنوعیو نرم افزار نویسی هم خیلی کاربردیه
+بعدا کامل میشه
چند روزه قفلم رو این موضوع
برا یک بار باید کلکشو بکنم و خلاص
+پست اپدیت میشود
توابع بازگشتی یا Recursion
احتمال خیلی زیاد اینجا بشه یه وبلاگ در مورد رشتم که البته شاید فقط برا خودم کارایی داشته باشه
هدف اصلیمم مسابقات acm هست
به نوعی شاید اینجا یه روزشمار باشه تا روزمسابقات اصلی
تازه دیروز ترم تابستونیم تموم شده و تقریبا بیست روز فرصت دارم با زمان زیاد در روز سوالات مسابقه رو پیگیری کنم ولی بعدش درسای دانشگاه شروع میشه
توی فهم سوالات یکم مشکل دارم که فکر میکنم مشکل از نحوه بیان اوناست:|
ولی باید یه زمانی بگذره تا پیشرفت کار رو بررسی کنم