zoukankan      html  css  js  c++  java
  • 2017 ACM-ICPC 南宁区比赛 Minimum Distance in a Star Graph

    2017-09-25 19:58:04

    writer:pprp

    题意看上去很难很难,但是耐心看看还是能看懂的,给你n位数字

    你可以交换第一位和之后的某一位,问你采用最少的步数可以交换成目标

    有五组数据

    用BFS进行搜索,并进行剪枝,已经搜索过的点不再搜索

    #include <iostream>
    #include <cstdio>
    #include <algorithm>
    #include <cstring>
    #include <string>
    #include <set>
    #include <queue>
    
    using namespace std;
    
    string sa, sb;
    
    int n;
    
    struct node
    {
        string str;
        int times;
        node()
        {
            str = "";
            times = 0;
        }
    };
    
    int bfs()
    {
        queue<node> q;
        set<string> ss;
        node now , nex;
        now.str = sa;
        q.push(now);
        ss.insert(now.str);
        while(!q.empty())
        {
            now = q.front();
            q.pop();
            if(now.str == sb)
                return now.times;
            for(int i = 1; i < n;i++)
            {
                nex.str = now.str;
                nex.times = now.times+1;
                nex.str[i] = now.str[0];
                nex.str[0] = now.str[i];
                if(ss.count(nex.str) == 0)
                {
                    ss.insert(nex.str);
                    q.push(nex);
                }
                else
                    continue;
            }
        }
    }
    
    int main()
    {
        cin >> n;
        for(int i = 0 ; i < 5 ;i++)
        {
            cin >> sa >> sb;
            cout << bfs() << endl;
        }
    
    
        return 0;
    }

    现阶段掌握搜索还不是太好,希望以后可以尽快掌握

  • 相关阅读:
    JAVA程序员常用英语
    计算机常用英语汇总
    从一个前端角度来说页面的优化:雅虎35条(转)
    前端学习(五)
    PS常用快捷键(收藏)
    web前端开发规范文档
    前端学习(四)
    Web前端开发面试题
    linux --批量修改文件内容
    git --添加多个文件
  • 原文地址:https://www.cnblogs.com/pprp/p/7593679.html
Copyright © 2011-2022 走看看