Submission #1780272


Source Code Expand

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace C
{
    class Program
    {
        static bool func(int count,char[][] field)
        {
            if(count==0)
            {
                //全て置く事ができた
                for (int y = 0; y < 8; y++)
                {
                    Console.WriteLine(new string(field[y].Select(x => x == 'Q' ? 'Q' : '.').ToArray()));
                }
                return true;
            }
            foreach (var pos in getCanSet(field))
            {
                //現在のフィールドのクローンを作成
                var clone = field.Select(x => x.ToArray()).ToArray();
                //クローン上に配置
                set(clone,pos.Item1, pos.Item2);
                //再起処理
                if( func(count - 1, clone) ) return true;
            }
            return false;
        }
        static void set(char[][] field, int y, int x)
        {
            for (int i = 0; i < 8; i++)
            {
                field[y][i] = 'X';
                field[i][x] = 'X';
                if (y + i < 8 && x + i < 8) field[y + i][x + i] = 'X';
                if (y - i >= 0 && x - i >= 0) field[y - i][x - i] = 'X';
                if (y + i < 8 && x - i >= 0) field[y + i][x - i] = 'X';
                if (y - i >= 0 && x + i < 8) field[y - i][x + i] = 'X';
            }
            field[y][x] = 'Q';
        }
        static IEnumerable<Tuple<int, int>> getCanSet(char[][] field)
        {
            for (int y = 0; y < 8; y++)
            {
                for (int x = 0; x < 8; x++)
                {
                    if (field[y][x] == '.') yield return Tuple.Create(y, x);
                }
            }
        }
        static void Main(string[] args)
        {
            var field = Enumerable.Repeat(0, 8).Select(x => Console.ReadLine().ToArray()).ToArray();

            for (int y = 0; y < 8; y++)
            {
                for (int x = 0; x < 8; x++)
                {
                    if (field[y][x] == 'Q')
                    {
                        set(field, y, x);
                    }
                }
            }
            if(field.SelectMany(x=>x).Where(x=>x=='Q').Count()!=3)
            {
                Console.WriteLine("No Answer");
                return;
            }
            //全探索
            if(func(5, field))return;

            Console.WriteLine("No Answer");
            
        }
    }
}

Submission Info

Submission Time
Task C - パズルのお手伝い
User define0314
Language C# (Mono 4.6.2.0)
Score 100
Code Size 2624 Byte
Status AC
Exec Time 36 ms
Memory 13780 KB

Judge Result

Set Name All
Score / Max Score 100 / 100
Status
AC × 42
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 36 ms 13780 KB
00_sample2.txt AC 29 ms 11476 KB
01_rnd_00.txt AC 32 ms 13652 KB
01_rnd_01.txt AC 31 ms 9556 KB
01_rnd_02.txt AC 28 ms 9428 KB
01_rnd_03.txt AC 31 ms 11604 KB
01_rnd_04.txt AC 29 ms 11476 KB
01_rnd_05.txt AC 31 ms 11604 KB
01_rnd_06.txt AC 29 ms 11476 KB
01_rnd_07.txt AC 29 ms 11476 KB
01_rnd_08.txt AC 29 ms 13524 KB
01_rnd_09.txt AC 29 ms 11476 KB
01_rnd_10.txt AC 28 ms 9428 KB
01_rnd_11.txt AC 28 ms 9428 KB
01_rnd_12.txt AC 28 ms 11476 KB
01_rnd_13.txt AC 31 ms 11604 KB
01_rnd_14.txt AC 28 ms 11476 KB
01_rnd_15.txt AC 29 ms 13524 KB
01_rnd_16.txt AC 28 ms 13524 KB
01_rnd_17.txt AC 28 ms 11476 KB
01_rnd_18.txt AC 31 ms 13652 KB
01_rnd_19.txt AC 31 ms 11604 KB
01_rnd_20.txt AC 28 ms 11476 KB
01_rnd_21.txt AC 29 ms 13524 KB
01_rnd_22.txt AC 28 ms 9428 KB
01_rnd_23.txt AC 30 ms 11604 KB
01_rnd_24.txt AC 28 ms 11476 KB
01_rnd_25.txt AC 30 ms 9556 KB
01_rnd_26.txt AC 28 ms 11476 KB
01_rnd_27.txt AC 31 ms 11604 KB
01_rnd_28.txt AC 30 ms 9556 KB
01_rnd_29.txt AC 28 ms 11476 KB
01_rnd_30.txt AC 28 ms 11476 KB
01_rnd_31.txt AC 28 ms 9428 KB
01_rnd_32.txt AC 32 ms 13652 KB
01_rnd_33.txt AC 28 ms 13524 KB
01_rnd_34.txt AC 28 ms 11476 KB
01_rnd_35.txt AC 29 ms 11476 KB
01_rnd_36.txt AC 29 ms 11476 KB
01_rnd_37.txt AC 28 ms 11476 KB
01_rnd_38.txt AC 31 ms 11604 KB
01_rnd_39.txt AC 31 ms 11604 KB