llllmz

导航

Catch That CowC++

其实可以看作一个图,源点是5,5的邻边分别是6,4,10(三种走法),利用BFS,最先遍历17为最少时间。

#include<iostream>
#include<queue>
#include<vector>
using namespace std;

struct node{
    int data;
    int times;
};
typedef struct node num;

int main(){
    int n ,m;
    while(cin >> n >> m){
        if(n<m){
            vector<int> visit;
            for(int i=0;i<=2*m;i++){
                visit.push_back(0);
            }
            queue<num> q;
            num tem;
            tem.data=n;
            tem.times=0;
            q.push(tem);
            visit[n]=1;
            while(!q.empty()) {
                num tem = q.front();
                q.pop();
                if (tem.data == m) {
                    cout << tem.times;
                    break;
                }
                if (tem.data + 1 <= 2 * m && visit[tem.data + 1] == 0) {
                    num x;
                    x.data = tem.data + 1;
                    x.times = tem.times + 1;
                    q.push(x);
                    visit[x.data] = 1;
                }
                if (visit[tem.data - 1] == 0) {
                    num x;
                    x.data = tem.data - 1;
                    x.times = tem.times + 1;
                    q.push(x);
                    visit[x.data] = 1;
                }
                if (tem.data * 2 <= 2 * m && visit[2 * m] == 0) {
                    num x;
                    x.data = tem.data * 2;
                    x.times = tem.times + 1;
                    q.push(x);
                    visit[x.data] = 1;
                }
            }
        }else{
            cout << n-m;
        }
    }
    return 0;
}

结果:

posted on 2024-01-30 22:32  神奇的萝卜丝  阅读(23)  评论(0)    收藏  举报