跳蚂蚱

作者: smatrcHendsa | 来源:发表于2019-03-20 08:51 被阅读0次

有9只盘子,排成1个圆圈。
其中8只盘子内装着8只蚱蜢,有一个是空盘。
我们把这些蚱蜢顺时针编号为 1~8

每只蚱蜢都可以跳到相邻的空盘中,
也可以再用点力,越过一个相邻的蚱蜢跳到空盘中。

请你计算一下,如果要使得蚱蜢们的队形改为按照逆时针排列,
并且保持空盘的位置不变(也就是1-8换位,2-7换位,...),至少要经过多少次跳跃?

参考 https://blog.csdn.net/monkey_rose/article/details/79769804
不难 但是写的心累 学习了string的用法 还有计算查重的时候不必把值给算出来 只需要往set里面丢string

#include <stdio.h>
#include <iostream>
#include <cstring>
#include <vector>
#include <queue>
#include <map>
#include <set>
#include <sstream>
#include <algorithm>
int N, M, K;
//const int MAXN = , MAXM = 0;
//typedef long long ll;
//const int si =
using namespace std;
int cd[4] = {-1, -2, 1, 2};
string sta = "123456789";
string ans = "876543219";
set <string> st;

void bfs() {
    queue <pair<string, int> > q;
    q.push(make_pair(sta, 0));
    
    while (!q.empty()) {
        pair<string, int> pa = q.front(); q.pop();
        string s = pa.first;
        int cnt = pa.second;

        if (s == ans) M = min(M, cnt);
        if (st.count(s) != 0) continue;
        st.insert(s);
        //cout << s << endl;
        int space = 0;
        for( int i = 0; i < 9; i++) {
            if (s.at(i) == '9')  {
                space = i;
                break;
            }
        }
        for(int i = 0; i < 4; i++) {
            int np = space + cd[i];
   i        f (np >= 9) np -=9;
            if (np < 0) np += 9;
            string sss = s;
            sss[space] = s[np];
            sss[np] = s[space];
            q.push(make_pair(sss, cnt + 1));
        }
    }
}
int main() {
    N = 9;
    M = 200000000;
    bfs();
    cout << M << endl;
    return 0;
}

相关文章

  • 跳蚂蚱

    有9只盘子,排成1个圆圈。其中8只盘子内装着8只蚱蜢,有一个是空盘。我们把这些蚱蜢顺时针编号为 1~8 每只蚱蜢都...

  • 争辩

    (文:胡郎 一蚂蚱遇见狗高兴地又叫又跳。蚂蚱对...

  • 能跳的蚂蚱

    在草地里跳,跳得再高点!一会在膝前,一会在胸前,一会在左边,一会在右边。 我低了,它们在头上,在后背。 看看手上毛...

  • 原创童话 | 爱跳的小蚂蚱

    文 | 小白妈妈养宝宝 小蚂蚱跳跳非常爱跳。每天太阳刚刚升起,它就不停的跳,跳啊跳啊,在哪里都能跳,有时候能跳上一...

  • 美味乎?

    美味乎? 白露过后无蝉鸣, 秋后蚂蚱去往生。 上过刀山趟油河, 做成菜肴端上桌。 夏蝉蚂蚱有何错? 被人胁迫跳油锅...

  • 蚂蚱

    秋后蚂蚱跳, 四野布暗哨。 历夏果实熟, 恰恰合胃道。

  • 读书手帐打卡DAY6

    #习得性无助# 就像蚂蚱跳瓶子,连续跳几次都跳不出去,就算后来把盖子去掉它还是认为自己只能跳那么高一样,陷入了习得...

  • 由一道笔记题想到的

    最近看到一道乐视的笔记题,比较有意思。大意如下: 一个蚂蚱,第一跳的距离是1,第二跳的距离是2,...,第N跳的距...

  • 穿着绿衣的流浪者

    蚂蚱,蚂蚱, 亲爱的蚂蚱, 你是否正在, 思念你的家? 蚂蚱,蚂蚱, 可悲的蚂蚱, 当绿色不断消退, 你是否仍在灰...

  • 童年的冬天.印象

    蚂蚱 蚂蚱喜欢逮蚂蚱,但这是冬天,并没有蚂蚱可以逮,于是蚂蚱的课桌里并没有温顺的尖头绿蚂蚱,也没有暴躁的方头褐蚂蚱...

网友评论

    本文标题:跳蚂蚱

    本文链接:https://www.haomeiwen.com/subject/aoyamqtx.html