شبه کدی بنویسید که حرکت اسب بر روی صفحه شطرنج را به گونه ای تنظیم کند که اسب دوبار در یک خانه نرود به عبارتی در هر خانه فقط یک بار اسب وارد شود و اگر در خانه دو بار وارد شد یک قدم به حرکت قبلی برگردد.
شبه کدی بنویسید که حرکت اسب بر روی صفحه شطرنج را به گونه ای تنظیم کند که اسب دوبار در یک خانه نرود به عبارتی در هر خانه فقط یک بار اسب وارد شود و اگر در خانه دو بار وارد شد یک قدم به حرکت قبلی برگردد.
می تونم خیلی ساده این کد رو برات بنویسم.همچنین اون کد جارو برقی هم کاری نداره. اما پیشنهاد می کنم رو مسائل دانشگاهت خودت کار کنی و اگه واقعا گیر کردی، مشکلت رو اینجا مطرح کنی.
ممکنه جوابت این باشه که قبلا تلاشت رو کردی و نشده. در این صورت راه حل منطقی اینه که کارهایی رو که کردی، اینجا بذاری تا روشون بحث کنیم.
موفق باشی
در مورد الگوریتم اسب فکر کردم،مثلا برای یه خونه باید حالتهایش را در نظر گرفت بعد از اون حالتهایی را از این خونه بررسی کرد که کمترین حالت ممکن باشه.اگه بخوای در حالت عادی بررسی کنی،یه خونه خالی میمونه.و در ضمن یکی از دوستام میگفت برای خونه (6و2) جواب نمیده.
من که از صحبتات چیزی نفهمیدم. بذار من یه شبه الگوریتم ارائه بدم، بعد تلاش کن همین شبه الگوریتم من رو بسط بدی (یعنی جزئیات بیشتری در نظر بگیری و سعی کنی به کد واقعی نزدیکترش کنی). لازم نیست این عملیات بسط دادن رو تو یه مرحله انجام بدی.
اما شبه کد بنده:
تابع بررسی (یه خونه شطرنج هم پارامتر هم داره)1- اگه همه صفحه شطرنج طی شده کار تمومه وگرنه:
2- ببین اسب از این خونه پارامتر کجاها میتونه بره. به ازای هر کدوم از خونه هایی که اسبمون میتونه بره:
2-1- تابع بررسی رو واسه اون خونه صدا کن.
اصل برنامه:
1- به ازای هرکدوم از خونه های صفحه شطرنج:
1-1- تابع بررسی رو با پارامتر بودن اون خونه حساب کن.
این پروژه ترم قبل بچه های کلاسه.
الگوریتم اون را میتونی از کتاب "ساختمان داده ها در ++c "نوشته هورویتس ترجمه آقای قلزم بیابی.
این کتاب را از 82 یی های کلاس میتونی بگیری.
سلامنوشته شده توسط na30m
این الگوریتم برای همه خانه ها جواب می دهد مشکل خاصی ندارد .
راحت تر این است که با استفاده از تابع بازگشتی بروی .
حتما باید بررسی کرد در این خانه ای که هست از این خانه فرضا چند حرکت می تواند داشته باشد اون حرکتی انتخاب می شود که کمترین حرکت ممکن را در مرحله ی بعدی داشته باشد .
مثلا اسب در 3 حرکت می تواند داشته باشد (در این خانه ای که هست ) حرکت اول را اگر بکند در حرکت بعدی 4 حرکت می تواند انجام دهد حرکت دوم را اگر بکند 3 حرکت در حرکت بعدی می تواند داشته باشد وحرکت سوم را اگر بکند در حرکت بعدی 1 حرکت خواهد داشد پس حرکت سوم را انتخاب باید کند که در حرکت بعدی کمترین حرکت را دارد.
چرا دوستانی که برنامه رو دارن نمیذارن اینجا تا هر کی خواست برداره؟؟؟؟
با C# 2005 نوشته شده
به درد میخوره ان شاالله
قفل مخفی تلگرام، واتس اپ و همه برنامه ها - قفل حرفه ای برای دستگاه اندرویدی شما - با امکان مخفی شدن و جلوگیری از Unisntall شدن
--آموزش ایجاد برنامه های چند زبانه در WPF
-BeRMOoDA File Encrypter-open source-using WPF, C# and MVVM Pattern
-نمونه برنامه ساده و کامل با الگوی MVVM برای کار با دیتابیس با استفاده از Entity Framework در WPF
-WPFMessageBox فارسی/انگلیسی - با قابلیت تغییر Skin
سه آرایه زیر رادرنظر بگیرید :
int access[ SIZE ][ SIZE ] = { 2, 3, 4, 4, 4, 4, 3, 2,
3, 4, 6, 6, 6, 6, 4, 3,
4, 6, 8, 8, 8, 8, 6, 4,
4, 6, 8, 8, 8, 8, 6, 4,
4, 6, 8, 8, 8, 8, 6, 4,
4, 6, 8, 8, 8, 8, 6, 4,
3, 4, 6, 6, 6, 6, 4, 3,
2, 3, 4, 4, 4, 4, 3, 2 };
int horizontal[ SIZE ] = { 2, 1, -1, -2, -2, -1, 1, 2 };
int vertical[ SIZE ] = { -1, -2, -2, -1, 1, 2, 2, 1 };
آرایه اول نشون میده که اگه اسب در یه خانه باشه ، به چند خانه بعد می تونه بره
مثلا اگه در خانه ای باشه که عدد 4 در آن خانه است ، عدد 4 نشان می دهد که اسب از خانه فعلی به 4 خانه دیگر می تواند برود
آرایه دوم و سوم در واقع حرکت اسب رو پیاده سازی می کنند .
به این صورت که اگه مثلا خانه اول از دو آرایه Horizontal و Vertical رو انتخاب کنیم ( بالاجبار باید عناصر های متناظر از این دو آرایه انتخاب شود مثلا اگر عنصر اول از آرایه دوم انتخاب شود باید عنصر اول نیز از آرایه سوم انتخاب شود ) به این معنی است که اسب 2 خانه به جلو و یک خانه به بالا باید برود ، که دقیقا یکی از 6 حرکت اسب است .
یک خانه برای شروع حرکت در نظر میگیریم ؛ در یک آرایه دیگر ( 8*8) این خانه را به عنوان اولین خانه ای که اسب از آنجا قرار است حرکت خود را آغاز کند ، ثبت می کنیم . سپس در آرایه Access از 6 خانه اطراف محل شروع حرکت 1 واحد کم میکنیم ، به این معنی که اگر اسب در یکی از این 6 خانه قرار گیرد ، یکی از خانه های موجود برای حرکت بعدی خود را از دست داده است ، چرا که یک بار از آنجا عبور کرده .
با این راهنمایی و کمی تامل در این مساله حتما خودتون می تونید جزویات حل و در نهایت کد این برنامه رو به زبان مد نظر خودتون بنویسید .
.