安徽省建设监理协会新网站网页游戏网站模板
web/
2025/10/6 3:48:59/
文章来源:
安徽省建设监理协会新网站,网页游戏网站模板,703804温州论坛,国外机械做的好的网站目录 原题截图#xff1a;
题目大意#xff1a;
主要思路#xff1a;
注#xff1a;
代码#xff1a; 原题截图#xff1a; 题目大意#xff1a;
给定两个 的矩阵 和 。
你每次可以交换矩阵 的相邻两行中的所有元素或是交换两列中的所有元素。
请问要使 变换至…目录 原题截图
题目大意
主要思路
注
代码 原题截图 题目大意
给定两个 的矩阵 和 。
你每次可以交换矩阵 的相邻两行中的所有元素或是交换两列中的所有元素。
请问要使 变换至 至少需要几步操作
如果无法变换至 则输出 -1。
主要思路
这个题正解不好想但我们看一下数据范围HW5。我们可以暴力bfs但我们要枚举有效数组所以用一个map记录就做成了。
注
不要再函数中开数组用vectorvectorint。
代码
#includebits/stdc.h
using namespace std;
int n,m;
vectorvectorint a(10,vectorint(10)),b(10,vectorint(10));
bool equation(vectorvectorint a,vectorvectorint b)
{for(int i1;in;i){for(int j1;jm;j){if(a[i][j]!b[i][j]){return 0;}}}return 1;
}
struct node{vectorvectorint x;int cnt;
};
mapvectorvectorint,bool mp;
void bfs()
{queuenode q;q.push({a,0});mp[a] 1;while(!q.empty()){node tmpq.front();q.pop();if(equation(tmp.x,b)){couttmp.cnt;exit(0);}for(int i1;in;i){swap(tmp.x[i],tmp.x[i1]);if(!mp.count(tmp.x)){q.push({tmp.x,tmp.cnt1});mp[tmp.x] 1; }swap(tmp.x[i],tmp.x[i1]);}for(int i1;im;i){for(int j1;jn;j){swap(tmp.x[j][i],tmp.x[j][i1]);}if(!mp.count(tmp.x)){q.push({tmp.x,tmp.cnt1});mp[tmp.x] 1; }for(int j1;jn;j){swap(tmp.x[j][i],tmp.x[j][i1]);}}}
}
int main()
{cinnm;for(int i1;in;i){for(int j1;jm;j){cina[i][j];}}for(int i1;in;i){for(int j1;jm;j){cinb[i][j];}}bfs();cout-1;return 0;
}
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/87721.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!