سلام
من یه مسابقه که همچین سخت هست رو می گم یه جایزه هم براش گذاشتم اونم یه مجموعه سی دی king 2006 حاوی 12 سی دی (معادل 12000 تومان)
سوال از این قرار هست یک اسب چگونه می تونه از یک خانه شطرنج حرکتش رو شروع کنه و بدون اینکه خانه تکراری ای رو بره تمام خانه ها ی شطرنج رو طی کنه یعنی با 63 حرکت 64 خانه شطرنج رو طی کنه
اینکه از چه خانه ای شروع بشه فرقی نداره
من این برنامه رو نوشتم با تابع بازگشتی ولی این برنامه ای که من نوشتم خیلی کنده یعنی شاید چند روز هم کار
کنه تموم نشه شما باید برنامه این بنویسید که از الگوریتم دیگه ای استفاده کنه و بتونه تمام حالات رو حساب کنه
لطفا درمورد این که برنامه من چطوری کار می کنه نپرسید چون توضیح توی این کادر های تایپی سخت هست
من یه مسابقه که همچین سخت هست رو می گم یه جایزه هم براش گذاشتم اونم یه مجموعه سی دی king 2006 حاوی 12 سی دی (معادل 12000 تومان)
سوال از این قرار هست یک اسب چگونه می تونه از یک خانه شطرنج حرکتش رو شروع کنه و بدون اینکه خانه تکراری ای رو بره تمام خانه ها ی شطرنج رو طی کنه یعنی با 63 حرکت 64 خانه شطرنج رو طی کنه
اینکه از چه خانه ای شروع بشه فرقی نداره
من این برنامه رو نوشتم با تابع بازگشتی ولی این برنامه ای که من نوشتم خیلی کنده یعنی شاید چند روز هم کار
کنه تموم نشه شما باید برنامه این بنویسید که از الگوریتم دیگه ای استفاده کنه و بتونه تمام حالات رو حساب کنه
لطفا درمورد این که برنامه من چطوری کار می کنه نپرسید چون توضیح توی این کادر های تایپی سخت هست
#include<iostream.h>
#include<math.h>
#include<conio.h>
int table[8*8],nm=0;
void l2l(int number);
int main()
{
for (int i = 0 ; i <= 8*8-1 ; i++) table=0;
l2l(14);
return 0;
}
void l2l(int number)
{
table[number]=1;
nm++;
if (nm>8*8) cout << "Find One" << endl;
if(table[number + (8-2)] == 0 && (number + (8-2)) < 8*8 && (number + (8-2)) >= 0) l2l(number + (8-2));
if(table[number + (8+2)] == 0 && (number + (8+2)) < 8*8 && (number + (8+2)) >= 0) l2l(number + (8+2));
if(table[number + (2*8-1)] == 0 && (number + (2*8-1)) < 8*8 && (number + (2*8-1)) >= 0) l2l(number + (2*8-1));
if(table[number + (2*8+1)] == 0 && (number + (2*8+1)) < 8*8 && (number + (2*8+1)) >= 0) l2l(number + (2*8+1));
if(table[number - (8-2)] == 0 && (number - (8-2)) < 8*8 && (number - (8-2)) >= 0) l2l(number - (8-2));
if(table[number - (8+2)] == 0 && (number - (8+2)) < 8*8 && (number - (8+2)) >= 0) l2l(number - (8+2));
if(table[number - (2*8-1)] == 0 && (number - (2*8-1)) < 8*8 && (number - (2*8-1)) >= 0) l2l(number - (2*8-1));
if(table[number - (2*8+1)] == 0 && (number - (2*8+1)) < 8*8 && (number - (2*8+1)) >= 0) l2l(number - (2*8+1));
table[number]=0;
nm--;
}
#include<math.h>
#include<conio.h>
int table[8*8],nm=0;
void l2l(int number);
int main()
{
for (int i = 0 ; i <= 8*8-1 ; i++) table=0;
l2l(14);
return 0;
}
void l2l(int number)
{
table[number]=1;
nm++;
if (nm>8*8) cout << "Find One" << endl;
if(table[number + (8-2)] == 0 && (number + (8-2)) < 8*8 && (number + (8-2)) >= 0) l2l(number + (8-2));
if(table[number + (8+2)] == 0 && (number + (8+2)) < 8*8 && (number + (8+2)) >= 0) l2l(number + (8+2));
if(table[number + (2*8-1)] == 0 && (number + (2*8-1)) < 8*8 && (number + (2*8-1)) >= 0) l2l(number + (2*8-1));
if(table[number + (2*8+1)] == 0 && (number + (2*8+1)) < 8*8 && (number + (2*8+1)) >= 0) l2l(number + (2*8+1));
if(table[number - (8-2)] == 0 && (number - (8-2)) < 8*8 && (number - (8-2)) >= 0) l2l(number - (8-2));
if(table[number - (8+2)] == 0 && (number - (8+2)) < 8*8 && (number - (8+2)) >= 0) l2l(number - (8+2));
if(table[number - (2*8-1)] == 0 && (number - (2*8-1)) < 8*8 && (number - (2*8-1)) >= 0) l2l(number - (2*8-1));
if(table[number - (2*8+1)] == 0 && (number - (2*8+1)) < 8*8 && (number - (2*8+1)) >= 0) l2l(number - (2*8+1));
table[number]=0;
nm--;
}