C프로그램 queen 소스 자세한설명쫌 부탁합니다
가온길
C프로그램 완전 초보입니다
밑에 queen소스 설명쫌 부탁드립니다.
그리고 지금 달린 주석 말고 주석 쫌 자세하게 설명 해주실수있나요
지금 이라인의 문장은 어떤 어떤 일을 하기 위해서 이렇게 쎃다던지
부탁쫌 드립니다. 아무리봐도 잘모르겠내요 ㅜㅜ#include stdio.h
#include malloc.h
#include math.h
void queens(int i, int n, int col[]); // n개 queen
void printqueen(int n, int col[]); // n개 queen의 위치 출력
int promising(int i, int col[]); // 유망한지 검사하는 함수
int cnt;
int main()
{
int i;
int n;
int* col;
printf(N*N행의 체스판과 N개의 bishop?\n );
scanf(%d, &n);
getchar();
col = (int*) malloc(sizeof(int)*n);
queens(0, n, col);
free(col);
return 0;
}
void queens(int i, int n, int col[])
{
int j;
if (promising(i, col)) // 유망한가?
if (i == n) {// n개의 queen 위치를 찾았나?
printqueen(n, col); // queen 위치 출력
printf(\n총 경우의 수: %d\n, cnt);
}
else
for(j = 1; j = n; j++) { // (i+1)번째 행에 있는 여왕말을
col[i+1] = j; // n개의 열에 놓을 수 있는지 각각
queens(i+1, n, col); // 검사한다.
}
}
void printqueen(int n, int col[]) // 깔끔하게 출력
{
int j, k;
for(j = 1; j = n; j++) {
for(k = 1; k col[j]; k++) {
printf( -- ); // queen이 없는 칸
}
printf( x ); // queen
for(k = col[j]; k n; k++)
printf( -- ); // queen 없는 칸
printf(\n);
printf(\n);
}
printf(\n);
printf(Press ENTER to continue);
cnt++;
getchar(); // 결과 값이 많으므로 하나의 결과값마다 멈추도록
}
int promising(int i, int col[]) // 유망한지 판단하는 함수
{
int k;
int bSwitch;
k = 1;
bSwitch = 1;
while( k i && bSwitch) {
/* col[i] == col[k] 는 같은 열에 있는지 판별한다
* abs(col[i] - col[k]) == i - k의 경우는
* 2개의 여왕말간의 행의 차와 열의 차의 절대값이 같으면
* 같은 대각선상에 있다는 의미이다. */
if(col[i] == col[k] || abs(col[i] - col[k]) == i-k)
bSwitch = 0;
k++;
}
return bSwitch;
}
-
핑1크캣 2023-06-22
퀸 자리 찾기는 알고리즘 문제에 있지요.ㅎ.
그렇다면 -_- 알고리즘 책을 찾아 보세요 ^^ -
로운 2023-06-22
과제는 스스로 하시는게 도움이 됩니다 ^^
대부분의 주석은 달려있는걸로 봐서 main절에 있는부분만 주석 다시면 될거 같은데요.
모르는 명령어는 책이나 검색을 활용하셔서 해결하시면 될뜻하네요
A+ 받으시길 기원합니다.^^