22 Nisan 2009 Çarşamba

N Queen problem

private static int[] NQueenProblem(int N)
{
int[] dizi=new int[N];

int kalan = N % 12;
int control = 0;
int bir_index = 0, uc_index = 0, bes_index = 0;


for (int i = 2; i <= N; i+=2)
{
dizi[control] = i;
control++;
}

if (kalan == 9 || kalan == 3)
{

for (int i = 0; i < control-1; i++)
{
dizi[i] = dizi[i + 1];
}
dizi[control-1] = 2;
}

for (int i = 1; i <= N; i += 2)
{
dizi[control] = i;
control++;
}

if (kalan == 2)
{
// 1 ve 3 un yerını degis, 5 i liste sonuna al

for (int i = 0; i < control; i++)
{
if (dizi[i] == 1)
{
bir_index = i;
}
else if (dizi[i] == 3)
{
uc_index = i;
}
else if (dizi[i] == 5)
{
bes_index = i;
}

}
dizi[bir_index] = 3;
dizi[uc_index] = 1;

for (int i = bes_index; i < control-1; i++)
{
dizi[i] = dizi[i + 1];
}
dizi[control - 1] = 5;
}

if (kalan == 3 || kalan == 9)
{
// 1 ve 3 u liste sonuna al

for (int i = 0; i < control; i++)
{
if (dizi[i] == 1)
{
bir_index = i;
}
else if (dizi[i] == 3)
{
uc_index = i;
}


}

for (int i = bir_index; i < control - 1; i++)
{
dizi[i] = dizi[i + 1];
}
dizi[control - 1] = 1;

for (int i = uc_index; i < control - 1; i++)
{
dizi[i] = dizi[i + 1];
}
dizi[control - 1] = 3;

}

return dizi;
}

Hiç yorum yok: