
دوستان حتما تا به حال معمای هشت وزیر به گوش شما هم خورده که در بسیاری از دانشگاه ها به عنوان پروژه از دانشجوها خواسته میشه ودر اون باید 8 وزیر رو طوری در یک صفحه شطرنج بچینی که همدیگر رو گارد ندهند این معما راه حل های مختلفی دارد یا بهتر بگوئیم با چندین الگوریتم حل می شود که مهمترین آنها تکنیک عقبگرد می باشد اما امروز یک کد ساده برای اینکار در اختیار شما عزیزان قرار می دهم که دوستان به راحتی می توانند اون رو با زبان های مختلف تغییر دهند این الگوریتم با استفاده از توابع بازگشتی نوشته شده است و کاملا ساده می باشد
کد برنامه در ادامه مطلب
#include <iostream.h>
#include<conio.h>
#include<math.h>
#include<dos.h>
#include<stdlib.h>
class vazer{
public:
void arash();
int test( int i , int j );
private:
int board[8][8] ;
}em;//+++++++++++++++++
int vazer::test( int i , int j )
{
for ( int a = 0 ; a < 8 ; a++ )
board[i][a] = 0;
for ( int b = 1 ; b < 8 ; b++ )
if ( i - b >= 0 ) {
if ( board[i - b][j] != 0 )
return 0;
if ( j - b >= 0 )
if ( board[i - b][j - b] != 0 )
return 0;
if ( j + b <= 7 )
if ( board[i - b][j + b] != 0 )
return 0;
}
board[i][j] = 1;
return 1;
}//+++++++++++++++++++++++
void vazer::arash()
{
int u=1;
for ( int a = 0 ; a < 8 ; a++ )
if(em.test( 0 , a ))
for ( int b = 0 ; b < 8 ; b++ )
if(em.test( 1 , b ))
for ( int c = 0 ; c < 8 ; c ++ )
if(em.test( 2 , c ))
for ( int d = 0 ; d < 8 ; d++ )
if(em.test( 3 , d ))
for ( int e = 0 ; e < 8 ; e++ )
if(em.test( 4 , e ))
for ( int f = 0 ; f < 8 ; f++ )
if(em.test( 5 , f ))
for ( int g = 0 ; g < 8 ; g++ )
if(em.test( 6 , g ))
for ( int h = 0 ; h < 8 ; h++ )
if(em.test( 7 , h )) {
for ( int m = 0 ; m < 8 ; m++ ) {
for ( int n = 0 ; n < 8 ; n++ )
if( board[m][n]==1)
{ textcolor(1 );
cout<< " v"<<" " ;}
else
cout << " ." <<" ";
cout <<"\n"<<endl;
}
getch();
clrscr();
u++;
if(u>92){
clrscr();
gotoxy(20,25);
cout<<"for Queen program [8][8] just 92 emkan";
break;
}
cout<<"\n\n\t\t\t\t\t"<<u<<endl<<"\n\n";
}
}//+++++++++++++++++end
void print(char ch[],int m)
{
for(int i=0;ch[i];i++)
{
cout<<ch[i];
delay(m);
}
}
int main()
{
textbackground(188);
textcolor(7);
clrscr();
print("\n\n\n\t\t\t\t welcom to Queen programm\n",70);
print("\n\n\t\t\t\t Author : maslem dadashzade\n",70);
print("\n\n\t\t\t\t Email :info@arashdownload.com\n",70);
print("\n\n\t\t\t\t Web :www.arashdownload.com\n",70);
print("\n\n\t\t\t\t copy right 1389\n",70);
cout<<"\n\n\n\t\t\plz chooz(for start program :y for Esc :any key)";
if(getch()=='y'){
clrscr();
em.arash();
}
getch();
return 0;
}
پاسخ به این نظر ۱۷ خرداد ۱۳۸۹ ۱۱:۵۸ قֽظֽ
کد برنامه معمای 8 یا همون پازل8که اعداد1 تا 8 رو به ترتیب می چیند را ندارید اگه دارید ممنون میشم برام بفرستین
پاسخ به این نظر ۹ بهمن ۱۳۸۹ ۱:۲۹ قֽظֽ
سایت تون جالب بود