7*7格子范围内,随机分布从1-5的5个数字


前提:设总移动格子数为


 int total=0
int grid[7][7]

grid[2][3]=1 进行


 left:grid[2][2]=1 grid[2][3]=4 total++
right: grid[2][4]=1 grid[2][3]=0 total++
up:grid[1][3]=1 grid[2][3]=0 total++
down:grid[3][3]=1 grid[2][3]=0 total++
sucess(1 or 2):
1.for(int i=0; i<6; i++) grid[x][y+i] = i+1
2.for(int i=0; i<6; i++) grid[x+i][y] = i+1

7x7格子中有1-5,5个数字,可以上下左右移动,每次移动消耗total++,找出一种total为最小的移动方法,使1-5排列成横行或者竖列,目前没啥思路,求思路或者方案

如:


 0 0 0 0 0 0 0
2 0 0 0 0 0 0
0 0 4 1 0 0 0
0 3 0 0 0 0 0
0 0 0 0 0 0 0
0 0 0 0 0 0 0
0 0 0 0 0 5 0

移动为:


 0 0 0 0 0 0 0
0 0 0 0 0 0 0
1 2 3 4 5 0 0
0 0 0 0 0 0 0
0 0 0 0 0 0 0
0 0 0 0 0 0 0
0 0 0 0 0 0 0

算法 C++

比企谷雪乃 10 years, 4 months ago

可以BFS+剪枝试一试,用A*也可以,不过不知道能不能最优

DHMKII answered 10 years, 4 months ago

Your Answer