27-06-2006, 22:52
|
|
|
חבר מתאריך: 25.06.06
הודעות: 16
|
|
8 מלכות בלוח שחמט
ניסיתי לעשות את התרגיל של 8 מלכות בלוח שחמט.
התוכנית עוברת על כל האפשרויות , חוץ מהאפשרויות שבהם מספר מלכות נמצאות באותה שורה או עמודה, כלומר יש 8 עצרת אפשרויות.
הפונקציה רצה, לפי מה שאני רואה היא עוברת על כל האפשרויות , אך אין תוצאה.
תודה רבה לעוזרים.
קוד מצורף:
קוד:
#include <iostream.h>
#include <conio.h>
int sum=0;
inline void sshow(char a[])
{
int i=0,j=0;
for (i=0; i < 8; i++)
for (j=0; j < 8; j++)
{
gotoxy(i*3+1,j*2+1);
if (a[i]==j) {
cout<<"-X-";
}else
cout<<"---";
}
}
int check(char a[]);
void tryall(char a[],int n);
void swap(char *a,char *b);
void main()
{
clrscr();
char a[8]={0,1,2,3,4,5,6,7};
tryall(a,0);
cout<<"\n"<<sum;
getch();
}
void swap(char *a, char *b)
{
int tmp=*b;
*b=*a;
*a=tmp;
}
int check(char a[])
{
int flag=1;
int i=0,j=0;
for (i=0; i < 8; i++)
for (j=0; j<8; j++)
{
if (i!=j) {
if((a[i]==a[j]) || ( ((a[i]+1)/(i+1))==((a[j]+1)/(j+1)) ) )
flag=0;
} }
return flag;
}
void tryall(char a[],int n)
{
int i;
for (i=n; i <= 7; i++) {
swap(a[n],a[i]);
tryall(a,n+1);
swap(a[n],a[i]);
if (check(a)) {
sshow(a);
getch();
sum+=1;
}
}
}
_____________________________________
מקלדות לא כותבות באגים. יש אנשים שכותבים אותם.
"כאשר כולם חושבים בצורה זהה - זה סימן שאיש אינו חושב."
|