给定 x 坐标和 y 坐标的最大限制,我们想要计算一组坐标,使得任意两点之间的距离是非整数。选择的坐标 (i, j) 应在 0<=i<=x 和 0<=j<=y 范围内。此外,我们必须最大化集合。
例子:
Input : 4 4
Output : 0 4
1 3
2 2
3 1
4 0
Explanation : Distance between any two points
mentioned in output is not integer.
首先,我们要创建一个集合,这意味着我们的集合不能包含任何其他与之前使用过的 x 或 y 相同的点。好吧,其背后的原因是具有相同 x 坐标或 y 坐标的点会取消该坐标,从而导致它们之间的距离为整数。
例如,考虑点 (1, 4) 和 (1, 5),x 坐标将取消,因此,我们将得到积分距离。
其次,我们可以观察到,我们只有 x+1 个不同的 i 坐标和 y+1 个不同的 j 坐标。因此,集合的大小不能超过 min(x, y)+1。
第三个观察是我们知道对角线元素是 |ij|* 距离相距,因此,我们沿 i 坐标的对角元素进行求值,并通过公式 min(i, j)-i 计算 j 坐标。
C++
// C++ program to find maximum integral points
// such that distances between any two is not
// integer.
#include
using namespace std;
// Making set of coordinates such that
// any two points are non-integral distance apart
void printSet(int x, int y)
{
// used to avoid duplicates in result
set > arr;
for (int i = 0; i <= min(x, y); i++) {
pair pq;
pq = make_pair(i, min(x, y) - i);
arr.insert(pq);
}
for (auto it = arr.begin(); it != arr.end(); it++)
cout << (*it).first << " " << (*it).second << endl;
}
// Driver function
int main()
{
int x = 4, y = 4;
printSet(x, y);
return 0;
}
Python3
# Python3 program to find maximum integral points
# such that distances between any two is not
# integer.
# Making set of coordinates such that
# any two points are non-integral distance apart
def printSet(x, y):
# Used to avoid duplicates in result
arr = []
for i in range(min(x, y) + 1):
pq = [i, min(x, y) - i]
arr.append(pq)
for it in arr:
print(it[0], it[1])
# Driver code
if __name__ == "__main__":
x = 4
y = 4
printSet(x, y)
# This code is contributed by ukasp
Javascript
输出:
0 4
1 3
2 2
3 1
4 0
如果您希望与专家一起参加现场课程,请参阅DSA 现场工作专业课程和学生竞争性编程现场课程。