讨论/综合讨论/求救!提交和运行结果不一样,困扰了一下午。呜呜呜/
求救!提交和运行结果不一样,困扰了一下午。呜呜呜

c++ 队列和BFS 打开转盘锁问题,这是源码。样例都过了,但是提交和自己运行的结果不一样,所以不知道对错,啊啊啊啊啊啊啊啊啊啊,求救!

代码块
class Solution {
public:
    int cg(string &x)
    {
        int a = x[0];
        int b = x[1];
        int c = x[2];
        int d = x[3];
        int ss = (a-48)*1000+(b-48)*100+(c-48)*10+(d-48);

        return ss;
    }
    int openLock(vector<string>& a, string b) {

        if(find(a.begin(),a.end(),"0000")!=a.end())
            return -1;
        struct node
        {
            string s;
            int h;
        };
        int v[10000];
        node aa;
        node ab;
        aa.s = "0000";
        aa.h = 0;
        queue<node> q;
        q.push(aa);
        v[0] =1;
        while(!q.empty())
        {
            aa = q.front();
            q.pop();
            for(int i = 0;i<4;++i)
            {
                string cc = aa.s;
                int t = cc[i] - '0';
                int y = t;
                t = (t+1+10)%10;
                y = (y-1+10)%10;
                cc[i]=t+48;
                if(find(a.begin(),a.end(),cc)==a.end() &&(v[cg(cc)]==0) )
                { 
                    if(cc == b)
                        return aa.h+1;
                    ab.s = cc;
                    ab.h = aa.h+1;
                    q.push(ab);
                    v[cg(ab.s)] =1;
                   
                 }
                cc[i]=y+48;
                 if(find(a.begin(),a.end(),cc)==a.end() &&(v[cg(cc)]==0) )
                { 
                    if(cc == b)
                        return aa.h+1;
                    ab.s = cc;
                    ab.h = aa.h+1;
                    q.push(ab);
                     v[cg(ab.s)]=1;
                     
                }
            }
            
        }
      return -1;
        

    }
};

V_~4MJYY5120MP}CW@QRM4V.png

展开讨论
BIGBUNANA发起于 2020-05-04
最近编辑于 2020-05-05

你这是想用哈希判重吗?直接用set不是更好吗,这样看着太多了

展开全部 3 讨论