首页 > 代码库 > topcoder SRM 618 DIV2 MovingRooksDiv2
topcoder SRM 618 DIV2 MovingRooksDiv2
一开始Y1,Y2两个参数看不懂,再看一遍题目后才知道,vector<int>索引代表是行数,值代表的是列
此题数据量不大,直接深度搜索即可
注意这里深度搜索的访问标识不是以前的索引和元素,而是一个交换元素后的整个状态vector<int>,这样可以避免重复元素的搜索
set<vector<int> > visit; bool flag; void dfs(vector<int>& src, vector<int>& dst){ if(src =http://www.mamicode.com/= dst ) flag =true; if(flag) return; if(visit.find(src)!=visit.end()) return; visit.insert(src); for(int i = 0 ; i < src.size(); ++ i){ for(int j = i+1; j < src.size(); ++ j){ if(src[i] > src[j]){ swap(src[i],src[j]); dfs(src,dst); swap(src[i],src[j]); } } } } string move(vector <int> Y1, vector <int> Y2) { visit.clear(); flag = false; dfs(Y1, Y2); if(flag) return "Possible"; else return "Impossible"; }
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。