U E D R , A S I H C RSS

Eight Queen Problem/조현태

No older revisions available

No older revisions available



자야하는데 싸우나처럼 더워서.. 도저히 잠을 이루지못하고 뒤적거리다 찾아낸 문제..ㅎㅎ
심심해서 후딱 해치우기로함..ㅎㅎ
짜는데 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.0151 sec