나대로 보나
각럼 깔끔게 나 는군 -_-;;
C++로 만들 -_-; 더 라 돼는가 =0=
다 96 + 21 + 15 라군 -_-!
남면 ;;
- 론;; 두 문를 기 로 꼽는군 -_-;; .................결국 못미다. ㅠㅠ
EightQueenProblem.h ¶
~cpp
#ifndef EIGHTQUEENPROBLEM_H_
#define EIGHTQUEENPROBLEM_H_
class EightQueenProblem
{
private:
int chess[8][8]; //
int x,y;
bool ContraryQueen(); //들 늘려가는
bool SearchMap(); // 0(공) 남는를 검
void SketchMap(); // 1(공격가능)과2(는리)를
void reset(); // 0 남 때 기
public:
EightQueenProblem();
void MakeQueen(); // 늘려가기 는
void PrintMap(); //결과 력
};
#endif
EightQueenProblem.cpp ¶
~cpp
//////////////////////////////////////////////////////////////////////////
// //
// EightQueenProblem 라는 문를 드 //
// 2006/04/17 7:17 ~ 2006/04/17 10:24 //
// 막 날 2006/04/07 //
// 만든 : 민 //
// /
////////////////////////////////////////////////////////////////////////
#include <iostream>
using namespace std;
#include "EightQueenProblem.h"
EightQueenProblem::EightQueenProblem () {
reset ();
}
void EightQueenProblem::MakeQueen () {
x=rand()%8;
y=rand()%8;
while ( 1 ) {
if ( ContraryQueen () == 0 ) { //0 다단로 1 리
break;
}
reset ();
}
}
bool EightQueenProblem::ContraryQueen () {
for (int i = 0 ; i < 8 ; i++ ) {
if ( SearchMap () == 1 ) { // 가능 가능
return 1;
}
while ( 1 ) {
x = rand()%8;
y = rand()%8;
if ( chess[x][y] == 0 ) {
break;
}
}
chess[x][y] = 2; //결과 가 놓는다.
SketchMap ();
}
return 0;
}
void EightQueenProblem::SketchMap () {
int i,j;
for (i = 0 ; i < 8 ; i++ ) {
if (chess[x][i] != 2) {
chess[x][i] = 1;
}
if (chess[i][y] != 2) {
chess[i][y] = 1;
}
}
for (i = 0 ; i < 8 ; i++ ) {
for (j = 0 ; j < 8 ; j++ ) {
if ( (x-y) == (i-j) && chess[i][j] != 2) {
chess[i][j] = 1;
}
if ( (x+y) == (i+j) && chess[i][j] != 2) {
chess[i][j] = 1;
}
}
}
}
bool EightQueenProblem::SearchMap () {
for (int i = 0 ; i < 8 ; i++ ) {
for (int j = 0 ; j < 8 ; j++ ) {
if ( chess[i][j] == 0 ) {
return 0;
}
}
}
return 1;
}
void EightQueenProblem::reset () {
for (int i = 0 ; i < 8 ; i++ ) {
for (int j = 0 ; j < 8 ; j++ ) {
chess[i][j] = 0;
}
}
}
void EightQueenProblem::PrintMap () {
for (int i = 0 ; i < 8 ; i++ ) {
for (int j = 0 ; j < 8 ; j++ ) {
cout << chess[i][j] << " ";
}
cout << endl;
}
}
tast.cpp ¶
~cpp
#include "EightQueenProblem.h"
#include <iostream>
#include <time.h>
int main()
{
srand((unsigned)time(NULL));
EightQueenProblem test;
test.MakeQueen();
test.PrintMap();
return 0;
}










