Submission #1289581


Source Code Expand

#include <stdio.h>
#include <string.h>
#include <iostream>
#include<string>
using namespace std;

#define N 8
string T[8];
void  printQueen(int queen[N])
{
	int i;
	int sum = 0;
	for (i = 0; i < N; i++) {
		if (T[i][queen[i]] == 'Q')sum++;
	}
	if (sum != 3)return;
	for (i = 0; i < N; i++) {
		for (int j = 0; j < N; j++) {
			if (queen[i] == j)cout << 'Q';
			else cout << '.';
		}
          printf("\n");
	}
	exit(0);
}

/* (i,j)の位置から縦横斜めの方向にある board のすべての要素の値に dを加える */
void changeBoard(int board[N][N], int i, int j, int d)
{
	int k;

	for (k = 0; k < N; k++) {
		board[i][k] += d;             /* 横方向 */
		board[k][j] += d;             /* 縦方向 */
	}
	if (i > j) {
		for (k = 0; k < N - (i - j); k++) {
			board[k + (i - j)][k] += d;   /* 右下がり斜め方向 (i > jのとき) */
		}
	}
	else {
		for (k = 0; k < N - (j - i); k++) {
			board[k][k + (j - i)] += d;   /* 右下がり斜め方向 (i <= jのとき) */
		}
	}
	if (i + j < N) {
		for (k = 0; k <= i + j; k++) {
			board[i + j - k][k] += d;     /* 左下がり斜め方向(i +j < Nのとき) */
		}
	}
	else {
		for (k = i + j - N + 1; k < N; k++) {
			board[i + j - k][k] += d;     /* 左下がり斜め方向(i+j >= Nのとき) */
		}
	}
}

/* i 行目のクイーンの位置を設定して, setQueen(queen, board, i+1) を呼び出す
 ただし, i == N のときは,一つの解が queen に入っているのでそれを表示するだけである */
void setQueen(int queen[N], int board[N][N], int i)
{
	int j;

	if (i == N) {                              /* 解が見つかった */
		printQueen(queen);
		return;
	}

	for (j = 0; j < N; j++) {
		if (board[i][j] == 0) {                /* (i,j) の位置に置けるならば */
			queen[i] = j;                      /* (i,j) の位置にクイーンを置く */
			changeBoard(board, i, j, +1);      /* (i,j) から縦横斜めの方向のboard値を+1する */
			setQueen(queen, board, i + 1);       /* i+1 行目のクイーンの位置を決める */
			changeBoard(board, i, j, -1);      /* (i,j) から縦横斜めの方向のboard値を元に戻す */
		}
	}
}
signed main()
{
	for (int i = 0; i < 8; i++) {
		cin >> T[i];
	}
	int queen[N];
	int board[N][N];

	memset(board, 0, sizeof(board));
	setQueen(queen, board, 0);
}

Submission Info

Submission Time
Task C - パズルのお手伝い
User naoki2016
Language C++14 (GCC 5.4.1)
Score 0
Code Size 2434 Byte
Status WA
Exec Time 1 ms
Memory 256 KB

Judge Result

Set Name All
Score / Max Score 0 / 100
Status
AC × 8
WA × 34
Set Name Test Cases
All 00_sample1.txt, 00_sample2.txt, 01_rnd_00.txt, 01_rnd_01.txt, 01_rnd_02.txt, 01_rnd_03.txt, 01_rnd_04.txt, 01_rnd_05.txt, 01_rnd_06.txt, 01_rnd_07.txt, 01_rnd_08.txt, 01_rnd_09.txt, 01_rnd_10.txt, 01_rnd_11.txt, 01_rnd_12.txt, 01_rnd_13.txt, 01_rnd_14.txt, 01_rnd_15.txt, 01_rnd_16.txt, 01_rnd_17.txt, 01_rnd_18.txt, 01_rnd_19.txt, 01_rnd_20.txt, 01_rnd_21.txt, 01_rnd_22.txt, 01_rnd_23.txt, 01_rnd_24.txt, 01_rnd_25.txt, 01_rnd_26.txt, 01_rnd_27.txt, 01_rnd_28.txt, 01_rnd_29.txt, 01_rnd_30.txt, 01_rnd_31.txt, 01_rnd_32.txt, 01_rnd_33.txt, 01_rnd_34.txt, 01_rnd_35.txt, 01_rnd_36.txt, 01_rnd_37.txt, 01_rnd_38.txt, 01_rnd_39.txt
Case Name Status Exec Time Memory
00_sample1.txt AC 1 ms 256 KB
00_sample2.txt WA 1 ms 256 KB
01_rnd_00.txt WA 1 ms 256 KB
01_rnd_01.txt AC 1 ms 256 KB
01_rnd_02.txt WA 1 ms 256 KB
01_rnd_03.txt WA 1 ms 256 KB
01_rnd_04.txt WA 1 ms 256 KB
01_rnd_05.txt WA 1 ms 256 KB
01_rnd_06.txt WA 1 ms 256 KB
01_rnd_07.txt WA 1 ms 256 KB
01_rnd_08.txt WA 1 ms 256 KB
01_rnd_09.txt WA 1 ms 256 KB
01_rnd_10.txt WA 1 ms 256 KB
01_rnd_11.txt WA 1 ms 256 KB
01_rnd_12.txt WA 1 ms 256 KB
01_rnd_13.txt AC 1 ms 256 KB
01_rnd_14.txt WA 1 ms 256 KB
01_rnd_15.txt WA 1 ms 256 KB
01_rnd_16.txt WA 1 ms 256 KB
01_rnd_17.txt WA 1 ms 256 KB
01_rnd_18.txt AC 1 ms 256 KB
01_rnd_19.txt AC 1 ms 256 KB
01_rnd_20.txt WA 1 ms 256 KB
01_rnd_21.txt WA 1 ms 256 KB
01_rnd_22.txt WA 1 ms 256 KB
01_rnd_23.txt WA 1 ms 256 KB
01_rnd_24.txt WA 1 ms 256 KB
01_rnd_25.txt AC 1 ms 256 KB
01_rnd_26.txt WA 1 ms 256 KB
01_rnd_27.txt AC 1 ms 256 KB
01_rnd_28.txt WA 1 ms 256 KB
01_rnd_29.txt WA 1 ms 256 KB
01_rnd_30.txt WA 1 ms 256 KB
01_rnd_31.txt WA 1 ms 256 KB
01_rnd_32.txt AC 1 ms 256 KB
01_rnd_33.txt WA 1 ms 256 KB
01_rnd_34.txt WA 1 ms 256 KB
01_rnd_35.txt WA 1 ms 256 KB
01_rnd_36.txt WA 1 ms 256 KB
01_rnd_37.txt WA 1 ms 256 KB
01_rnd_38.txt WA 1 ms 256 KB
01_rnd_39.txt WA 1 ms 256 KB