题目链接:2850. 将石头分散到网格图的最少移动次数
代码如下:
//参考链接:https://leetcode.cn/problems/minimum-moves-to-spread-stones-over-grid/solutions/2435313/tong-yong-zuo-fa-zui-xiao-fei-yong-zui-d-iuw8 class Solution { public: int minimumMoves(vector>& grid) { vector> from,to; for(int i=0;i for(int j=0;j if(grid[i][j]) { for(int k=1;k from.emplace_back(i,j); } } else { to.emplace_back(i,j); } } } int res=INT_MAX; do { int total=0; //枚举 from 的所有排列,与 to 匹配,即累加从 from[i] 到 to[i] 的曼哈顿距离。 for(int i=0;i total+=abs(from[i].first-to[i].first)+abs(from[i].second-to[i].second); } res=min(res,total); }while(next_permutation(from.begin(),from.end()));//next_permutation用于获得下一个排列 return res; } };