입니다. 몇 가지 의사 코드로 그 장면을 촬영하겠습니다.
Function MinPaints(Matrix) Returns Integer
If the matrix is empty return 0
Find all rows and columns which have a single color
If there are none, return infinity, since there is no solution
Set the current minimum to infinity
For each row or column with single color:
Remove the row/column from the matrix
Call MinPaints with the new matrix
If the result is less than the current minimum, set the current minimum to the result
End loop
Return the current minimum + 1
End Function
나는 당신의 문제를 해결할 것이라고 생각하지만, 어떤 최적화 또는 아무것도 시도하지 않았다. 이것은 충분히 빠르지 않을 수도 있지만, 나도 몰라. 나는이 문제가 지수 이하의 시간에 해결 될 수 있을지 의심 스럽다.
BBB
BRR
BGG
|
+---BRR
| BGG
| |
| +---RR
| | GG
| | |
| | +---GG
| | | |
| | | +---[]
| | | | |
| | | | Solvable in 0
| | | |
| | | Solvable in 1
| | |
| | +---RR
| | | |
| | | +---[]
| | | | |
| | | | Solvable in 0
| | | |
| | | Solvable in 1
| | |
| | Solvable in 2
| |
| Solvable in 3
| BB
+---Another branch with RR ...
| GG
Solvable in 4
이 더 많은 배경을 줄 수 : 여기
이 알고리즘은 예를 해결할 방법입니까? 특히 예상되는 보드 크기는 무엇입니까? 당신은 어떤 복잡성을 기대하고 있습니까? – amit
@amit 네, 맞습니다. 보드는 최대 50 x 50이고 색상 수는 최대 10 개입니다. – Michael
타당성에 대해 언급해야합니다. 분명히 모든 곳에서 같은 색을 가진 단일 행이나 열이없는 보드는 해결할 수 없습니다. – flodel