Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
174147 | C班陈彦宏 | 骑士遍历1 | C++ | 运行超时 | 3 | 1000 MS | 256 KB | 979 | 2024-08-21 08:34:43 |
#include <bits/stdc++.h> using namespace std; //TLE int x,y,nx=1,ny=1,k=0,num=0; int dirx[5]= {0,1,2,2,1}; int diry[5]= {0,-2,-1,1,2}; int step[10000]; int main() { cin>>x>>y; while(1) { if((x-nx)>2*(y-ny)) { cout<<-1<<'\n'; return 0; } if(nx==x && ny==y) break; k++; if((x-nx)>2*(y-ny)) { k=step[num]; num--; nx-=dirx[k]; ny-=diry[k]; } else if(k>4) { k=step[num]; num--; nx-=dirx[k]; ny-=diry[k]; } else { nx+=dirx[k]; ny+=diry[k]; if(nx>x || ny>y || ny<1 || nx<1) { nx-=dirx[k]; ny-=diry[k]; } else if(x-nx>2*(y-ny)) { nx-=dirx[k]; ny-=diry[k]; } else { num++; step[num]=k; k=0; } } } for(int i=1; i<=num; i++) cout<<step[i]<<' '; cout<<'\n'; return 0; }