Професионална програма
Loading...
dido1092 avatar dido1092 37 Точки

7.Knight Game / C# Advanced

Нещо не мога да разбера условието на задачата моля за помощ и разяснение, като допълнение може и готови решения!

Условие:

7.Knight Game

Chess is the oldest game, but it is still popular these days. For this task we will use only one chess piece – the Knight.

The knight moves to the nearest square but not on the same rowcolumn, or diagonal. (This can be thought of as moving two squares horizontally, then one square vertically, or moving one square horizontally then two squares vertically— i.e. in an "L" pattern.) 

The knight game is played on a board with dimensions N x N and a lot of chess knights 0 <= K <= N2.

You will receive a board with K for knights and '0' for empty cells. Your task is to remove a minimum of the knights, so there will be no knights left that can attack another knight.

Input

On the first line, you will receive the N size of the board

On the next N lines, you will receive strings with Ks and 0s.

Output

Print a single integer with the minimum number of knights that needs to be removed

Constraints

  • Size of the board will be 0 < N < 30
  • Time limit: 0.3 sec. Memory limit: 16 MB.

 

Examples

Input

Output

5

0K0K0

K000K

00K00

K000K

0K0K0

1

 

2

KK

KK

0

8

0K0KKK00

0K00KKKK

00K0000K

KKKKKK0K

K0K0000K

KK00000K

00K0K000

000K00KK

12

Тагове:
0
C# Advanced
bojkonil avatar bojkonil 2 Точки

Здравейте,

След доста мъдрене, измъдрих следното:

за всяко К има максимум 8 позиции, които може да "удари", тоест 8 позиици, които трябва да се проверят и резултата да се сравни с останалите, за да се премахне това К с максимален резултат. Това нещо в цикъл до 0 удара решава проблема с минималния брой, тъй като премахваме един вид в Descending order.

А, тъй като около всяко К  се проверява на 2 елемента разстояние, за да си спестя описване на крайни случаи, просто правя матрицата по-голяма с 2 нулеви клетки от всяка страна (2 реда отгоре, 2 реда отдолу, 2 колони отляво, 2 колони отдясно). По този начин 1 метод, който проверява 8те възможни ударни точки, върши работа за всички позиции в зададената матрица, без Out of range exeption.

Ето и кода, за мазохистите:

https://pastebin.com/tU29hxCg

 

0