看着好乱,这是我的 int sx,sy,tx,ty; struct node{ int x; int y; int cnt; }; void solve(){ cin>>sx>>sy>>tx>>ty; if(tx<sx||ty<sy){ cout<<-1<<endl; return; } queue<node>ans; ans.push({sx,sy,0}); while(!ans.empty()){ node a=ans.front(); ans.pop(); int xx=a.x; int yy=a.y; int cntt=a.cnt; if(xx==tx&&yy==ty){ cout<<cntt<<endl; return; } int m=max(xx,yy); if(xx+m<=tx) ans.push({xx+m,yy,cntt+1}); if(yy+m<=ty) ans.push({xx,yy+m,cntt+1}); } cout<<-1<<endl; }