나대로 보나
각럼 깔끔게 나 는군 -_-;;
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; }