输入包含两个坐标(x|y)
,它们具有相同的x
或相同的y
(意味着它们始终位于同一列或行上)。
我希望得到所有坐标。
示例输入:
(2 | 2),(2 | 5)
示例输出:
(2 | 2),(2 | 3),(2 | 4),(2 | 5)
另一个例子:
(2 | 2),(5 | 2)
示例输出:
(2 | 2),(3 | 2),(4 | 2),(5 | 2)
我的方法是检查四个条件(y1 > y2
或x1 > x2
或y1 < y2
或x1 < x2
),然后使用四个单独的循环
这是我的伪代码:
if (x1 > x2)
decrement x1 until x1 = x2, list all coordinates
else if (x1 < x2)
increment x1 until x1 = x2, list all coordinates
else if (y1 > y2)
decrement y1 until y1 = y2, list all coordinates
else if (y1 < y2)
increment y1 until y1 = y2, list all coordinates
我正在寻找一种方法在一个循环中完成。
答案 0 :(得分:2)
您可以通过找出哪些变量需要增加并在循环中使用max
和min
函数来实现:
int x1 = 1;
int x2 = 6;
int y1 = 3;
int y2 = 5;
int min, max;
if (x1 == x2) {
min = Math.Min(y1,y2);
max = Math.Max(y1,y2);
} else {
min = Math.Min(x1,x2);
max = Math.Max(x1,x2);
}
for (int i = min; i < max; ++i) {
if (x1 == x2) {
Console.WriteLine(x1 + "/" + i);
else {
Console.WriteLine(i + "/" + y1);
}
}
请注意:我没有在很长时间内完成C#并且没有编译器在这里进行测试,所以请根据C#编辑代码。另请注意:如果坐标相同,则程序不会执行任何操作,上面的代码中没有错误检查!这只是示例代码!