U E D R , A S I H C RSS

Eight Queen Problem/조현태

자야하는데 싸우나처럼 더워서.. 도저히 잠을 루지못하고 뒤적거리다 찾아낸 문제..ㅎㅎ
심심해서 후딱 해치우기로함..ㅎㅎ
짜는데 20분도 안걸린듯..
결과는..
프로그래머로써의 자질 의심될정도로 막짠소스..ㅎㅎ
하지만 아무도 런 생각을 하지 않을듯..ㅎㅎ
항상 모범답안만 필요한건 아니기에..ㅎㅎ 머리도 식혀볼겸.. 장난좀 쳐봤어요.^^
초기화 조건의 압박..ㅎㅎㅎ
아무도 런생각은 안하겠죠?ㅎㅎㅎ

내일 날좀 풀리면 제대로 된 답도 생각해서 올릴께요.^^

늦어도 30초 안에는 다 풀리는듯..

~cpp 
#include <iostream>
#include <time.h>
using namespace std;
void main(){
	char mark[8][8]={0,};
	time_t temp;
	time_t sub_temp;
	srand(time(&temp));
	int qeen=0;
	while(qeen!=8){
		while (1){
			int x=rand()%8;
			int y=rand()%8;
			int sum=0;
			//세로확인
			for (register int i=0; i<8; ++i)
				sum+=mark[x][i];
			if (0==sum){
				//가로확인
				for (register int i=0; i<8; ++i)
					sum+=mark[i][y];
				if (0==sum){
					//대각선 확인
					for (register int i=-7; i<8; ++i)
						if (-1<i+x && i+x<8 && -1<y+i && i+y<8)
							sum+=mark[i+x][i+y];
					if (0==sum){
						//대각선 확인
						for (register int i=-7; i<8; ++i)
							if (-1<x+i && x+i<8 && -1<y-i && y-i<8)
								sum+=mark[x+i][y-i];
						if (0==sum){
							mark[x][y]=1;
							++qeen;
							break;
						}
					}
				}
			}
			time(&sub_temp);
			//아니다 싶으면 초기화.(1초마다.ㅎㅎ)
			if (temp!=sub_temp){
				temp=sub_temp;
				for (register int i=0; i<8; ++i)
					for (register int j=0; j<8; ++j)
                        mark[i][j]=0;
				qeen=0;
			}
		}
	}
	//출력
	for (register int i=0; i<8; ++i){
		for (register int j=0; j<8; ++j)
			cout << (int)mark[i][j];
		cout << "\n";
	}
}
Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2021-02-07 05:23:12
Processing time 0.0100 sec