
01.04.2009, 18:05
|
|
Постоянный
Регистрация: 05.07.2008
Сообщений: 555
С нами:
9394886
Репутация:
1467
|
|
Код HTML:
#include<stdio.h>
int col[8];
int up_free[15];
int dn_free[15];
int coln[8];
void addqueen(){
int i,c,r;
static int comb, row = -1;
row++;
//Проверяем все колонки
for (i = 0; i <= 7; i++){
//Если колонка не находится под ударом
if ( col[i] && up_free[i+row] && dn_free[row-i+7]){
//Запоминаем что в строке есть ферзь
coln[row] = i;
//Маркируем колонку и обе диагонали
col[i] = 0;
up_free[i+row] = 0;
dn_free[row-i+7] = 0;
//Если все строки мы уже запомнили, то выводим комбинацию
if (row >= 7){
comb++;
printf("\n\nCombination number - %d\n",comb);
for (r = 0; r <= 7; r++){
printf("\n");
for (c = 0; c <=7; c++){
if (c == coln[r]){
printf("@");
}
else{
printf("-");
}
}
}
}
else{
addqueen();
}
//Снимаем метку с колонки и диагонали
col[coln[row]] = 1;
up_free[row+coln[row]] = 1;
dn_free[row-coln[row]+7] = 1;
}
}
//Переходим к следующему варианту
row--;
}
int main(){
int i;
for (i = 0; i <= 7; i++){
col[i] = 1;
}
for (i = 0; i<= 14; i++){
up_free[i] = dn_free[i] = 1;
}
addqueen();
return 0;
}
прогу писал давно - так что щас не думал, просто перевёл с одного языка на другой.
исходник. нужно только скомпилировать и запустить)
|
|
|