Mannyak.Net  

Go Back   Mannyak.Net > Bilgisayar & Internet & Mobil Teknoloji > Programlama Diileri > C, C++, C#


Cevapla
 
LinkBack Seçenekler Stil
  #1  
Alt 06.10.10, 01:33
 
Üyelik tarihi: Oct 2010
Mesajlar: 360
Standart Birbirini almayan vezirler

Aşağıdaki programda özyinelemeli bir işlev yazılarak N * N boyutundaki bir satranç tahtasına birbirini almayan N tane Vezir yerleştirilmiştir.

V x x x x x x x x x x x x x x x x x x x
x x V x x x x x x x x x x x x x x x x x
x x x x V x x x x x x x x x x x x x x x
x V x x x x x x x x x x x x x x x x x x
x x x V x x x x x x x x x x x x x x x x
x x x x x x x x x x x x V x x x x x x x
x x x x x x x x x x x x x x V x x x x x
x x x x x x x x x x x V x x x x x x x x
x x x x x x x x x x x x x x x x x V x x
x x x x x x x x x x x x x x x x x x x V
x x x x x x x x x x x x x x x x V x x x
x x x x x x x x V x x x x x x x x x x x
x x x x x x x x x x x x x x x V x x x x
x x x x x x x x x x x x x x x x x x V x
x x x x x x x V x x x x x x x x x x x x
x x x x x x x x x V x x x x x x x x x x
x x x x x x V x x x x x x x x x x x x x
x x x x x x x x x x x x x V x x x x x x
x x x x x V x x x x x x x x x x x x x x
x x x x x x x x x x V x x x x x x x x x

Alıntı:
typedef int Bool;

Bool chess_rec_func(char (*pa)[BOARD_SIZE] ,int row);
Bool check(const char (*pa)[BOARD_SIZE], int row, int line);
void print_board(const char (*pa)[BOARD_SIZE]);

/************************************************** **************************************************/
int main()
{
char chess_board[BOARD_SIZE][BOARD_SIZE] = {0};

chess_rec_func(chess_board, 0);
print_board(chess_board);
}
/************************************************** **************************************************/
void print_board(const char (*pa)[BOARD_SIZE])
{
int i, k;

for (i = 0; i < BOARD_SIZE; ++i) {
printf("\n\t\t\t");
for (k = 0; k < BOARD_SIZE; ++k) {
if(!pa[k])
printf("x ");
else
printf("%c ", pa[k]);
}
}

printf("\n");
}
/************************************************** **************************************************/
int chess_rec_func(char (*pa)[BOARD_SIZE], int row)
{
int line = 0;

if (row == BOARD_SIZE)
return 1;

while (line < BOARD_SIZE) {
if (check(pa, row, line)) {
pa[row][line] = 'V';
if (chess_rec_func(pa, row + 1))
return 1;
pa[row][line] = 0;
}
line++;
}

return 0;
}
/************************************************** **************************************************/
int check(const char (*pa)[BOARD_SIZE],int row,int line)
{
/*check just the left size of the board*/

int nr = row;
int nl = line;

while (nr >= 0 && nl >= 0) {
if (pa[nr][nl] == 'V')
return 0;
--nr, --nl;
}

nl = line;
nr = row;

while (nl < BOARD_SIZE && nr >= 0) {
if (pa[nr][nl] == 'V')
return 0;
++nl, --nr;
}

nl = line;
nr = row;

while (nr >= 0) {
if (pa[nr][nl] == 'V')
return 0;
--nr;
}

return 1;
}
Digg this Post!Bookmark Post in Technorati
Alıntı ile Cevapla
Cevapla

Seçenekler
Stil

Yetkileriniz
Konu Acma Yetkiniz Yok
Cevap Yazma Yetkiniz Yok
Eklenti Yükleme Yetkiniz Yok
Mesajınızı Değiştirme Yetkiniz Yok

BB code is Açık
Smileler Açık
[IMG] Kodları Açık
HTML Kodları Kapalı
Trackbacks are Açık
Pingbacks are Açık
Refbacks are Açık



Tüm Zamanlar GMT +3 Olarak Ayarlanmış. Şuanki Zaman: 05:56.


Powered by vBulletin® Version 3.8.6
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.5.0 RC2 ©2010, Crawlability, Inc.
Copyright © 2006-2011 Mannyak.Net Paylaşım ve Eğlence Platformu