Bomb dropping algorithm

后端 未结 30 1594
挽巷
挽巷 2021-01-29 16:55

I have an n x m matrix consisting of non-negative integers. For example:

2 3 4 7 1
1 5 2 6 2
4 3 4 2 1
2 1 2 4 1
3 1 3 4 1
2 1 4 3 2
6 9 1 6 4
         


        
30条回答
  •  天命终不由人
    2021-01-29 17:39

    If you want the absolute optimal solution to clean the board you will have to use classic backtracking, but if the matrix is very big it will take ages to find the best solution, if you want an "possible" optimal solution you can use greedy algorithm, if you need help writing the algorithm i can help you

    Come to think of it that is the best way. Make another matrix there you store the points you remove by dropping a bomb there then chose the cell with maximum points and drop the bomb there update the points matrix and continue. Example:

    2 3 5 -> (2+(1*3)) (3+(1*5)) (5+(1*3))
    1 3 2 -> (1+(1*4)) (3+(1*7)) (2+(1*4))
    1 0 2 -> (1+(1*2)) (0+(1*5)) (2+(1*2))
    

    cell value +1 for every adjacent cell with a value higher than 0

提交回复
热议问题