0

تابع بازگشتی برای برنامه 8 وزیر

 
rezahashemian1374
rezahashemian1374
کاربر برنزی
تاریخ عضویت : مهر 1391 
تعداد پست ها : 254
محل سکونت : تهران

تابع بازگشتی برای برنامه 8 وزیر
پنج شنبه 18 مهر 1392  8:49 AM

این تابع بازگشتی برای برنامه 8 وزیر می باشد.

using namespace std;
int chess[8][8];
bool put(int move);
bool check(int,int);
int main()
{
    
int i,j;
    
printf("The Chess Befor Inserting Minister In It:\n");
    for(
i=0;i<8;++i)
    {
        for(
j=0;j<8;j++)
            
printf("%6d ",chess[i][j]);
        
printf("\n");
    }

    
put(0);
    
printf("The Chess After Inserting 8 Minister In It:\n");
    for(
i=0;i<8;++i)
    {
        for(
j=0;j<8;j++)
            
printf("%6d ",chess[i][j]);
        
printf("\n\n");
    }
    return 
0;
}

bool put(int move)
{
    if(
move>=8)
        return 
true;
    
int i;
    for(
i=0;i<8;i++)
        if(
check(move,i))
        {
            
chess[move][i]=1;
            if( 
put(move+1))
                return 
true;
            else
                
chess[move][i]=0;
        }
        return 
false;
}

bool check(int row,int col)
{
    
int i,j;
    for(
i=0;i<8;i++)
        if(
chess[i][col])
            return 
false;
    for(
i=row+1,j=col+1;i<8&&j<8;++i,++j)
        if(
chess[i][j])
            return 
false;
    for(
i=row-1,j=col-1;i>=0&&j>=0;--i,--j)
        if(
chess[i][j])
            return 
false;
    for(
i=row-1,j=col+1;i>=0&&col<8;i--,++j)
        if(
chess[i][j])
            return 
false;
    for(
i=row+1,j=col-1;i<8&&col>=0;++i,--j)
        if(
chess[i][j])
            return 
false;
    return 
true;
}

Seyyed.Reza.Hashemian@Gmail.Com

دوستانی که سوالی دارند یا مایل به تماس هستند می توانند از اطلاعات بالا استفاده نمایند.

اگر هم تایپکی زدید و احتیاج به پاسخگویی سریع داشتید اطلاع دهید

تشکرات از این پست
دسترسی سریع به انجمن ها