N 후 문제

1961 단어 c알고리즘
편집 을 잠시 하지 않 고 원본 코드 를 먼저 넣 습 니 다.
/**
* N   
*/
//#define LOCAL
#include <stdio.h>
#include <string.h>

#define MAXN 50 + 10

int qeen[MAXN][MAXN];
int rLine[2 * MAXN];
int lLine[2 * MAXN];
int col[MAXN];

int n;
int count;

void mytry(int x);
void printGraph();

int main()
{
#ifdef LOCAL
	freopen("C:\\Users\\Administrator\\Desktop\\Temp\\ACMTempIn.txt", "r", stdin);
	//freopen("C:\\Users\\Administrator\\Desktop\\Temp\\ACMTempOut.txt", "w", stdout);
#endif

    while(scanf("%d" , &n) != EOF && n <= 50)
    {
        //     
        printf("%-2d    

", n); // count = 0; memset(col, 0, sizeof(col)); memset(rLine, 0, sizeof(rLine)); memset(lLine, 0, sizeof(lLine)); memset(col, 0, sizeof(col)); // mytry(0); // printf("Count = %d
", count); } return 0; } void mytry(int x) { int i; for(i = 0; i < n; i++) { if(!qeen[x][i]&&!rLine[x + i]&&!lLine[x - i + n]&&!col[i]) { rLine[x + i] = true; lLine[x - i + n] = true; col[i] = true; qeen[x][i] = 1; if(x == n - 1) { count++; printGraph(); } else mytry(x + 1); rLine[x + i] = false; lLine[x - i + n] = false; col[i] = false; qeen[x][i] = 0; } } return ; } void printGraph() { int i, j; printf("Case %-2d :
", count); for(i = 0; i < n; i++) { printf("%-2d :", i + 1); for(j = 0; j < n; j++) { printf(" %d", qeen[i][j]); } printf("
"); } printf("
"); }

좋은 웹페이지 즐겨찾기