首页 > 其他 > 详细

topcoder SRM 618 DIV2 MovingRooksDiv2

时间:2014-06-17 14:05:27      阅读:333      评论:0      收藏:0      [点我收藏+]

一开始Y1,Y2两个参数看不懂,再看一遍题目后才知道,vector<int>索引代表是行数,值代表的是列

此题数据量不大,直接深度搜索即可

注意这里深度搜索的访问标识不是以前的索引和元素,而是一个交换元素后的整个状态vector<int>,这样可以避免重复元素的搜索

    set<vector<int> > visit;
    bool flag;
    void dfs(vector<int>& src, vector<int>& dst){
        if(src == 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";
    }

 

topcoder SRM 618 DIV2 MovingRooksDiv2,布布扣,bubuko.com

topcoder SRM 618 DIV2 MovingRooksDiv2

原文:http://www.cnblogs.com/xiongqiangcs/p/3791617.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!