题目描述:
题目解读:
想从(0,0)到(a,b),且最多能走两步,且要求路径中的两点的连线,不经过其他点。
输入想到的终点(a,b),输出步数和路径中的点。
解题思路:
从(0,0)出发到(x,0+1)或者(y,0+1),即横或纵坐标只加1,路径必然不会经过其他点。
然后从该点再出发,若想到达终点(a,b)且不经过其他点,那得必须保证从(x,1)或者(y,1)到(a,b),纵坐标或横坐标也只加1,另一个坐标任意。
所以中间点需要为(a-1,1)或(1,b-1)。
相当于有两种路径必符合要求:
1. 从(0,0)先到(a-1,1),然后到(a,b);
2. 从(0,0)先到(1,b-1),然后到(a,b);
代码实现:以 从(0,0)先到(1,b-1),然后到(a,b) 为例
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
void Solve() {
int a, b;
scanf("%d%d", &a, &b);
printf("2\n");
printf("%d %d\n",1,b-1);
printf("%d %d\n", a, b);
return;
}
int main() {
int t;
scanf("%d", &t);
while (t--) Solve();
return 0;
}
遇到的错误: