https://www.lanqiao.cn/courses/2786/learning/?id=67808题目链接
// 9届蓝桥螺旋折线.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。 //思想:通过遍历走过的路径的方式找到目标点,遍历的同时记录下线长。 #include using namespace std; int dis(int x, int y) { int flagx = -1, flagy = 1, a = 0, b = 0, sum = 0, i, j = 1, k;//sum用于记录线长,j用于表示走的步数 while (1) { for (i = 1; i <= j; i++)//x向flagx方向走j步(flagx为-1表示往负方向走,为1表示往正方向在,下面y也一样) { if (a == x && b == y)//遍历到了想要的位置就退出 return sum; else { a = a + flagx; sum++; } } for (i = 1; i <= j; i++)//y走 { if (a == x && b == y) return sum; else { b = b + flagy; sum++; } } flagx = -flagx;//换方向 flagy = -flagy; j++;//走的步数加1 } } int main() { int x, y; cin >> x >> y; int sum = dis(x, y); cout << sum; }