尝试编写程序,找到许多矩形之间的交集。试图交叉示例矩形(x,y,宽度,高度) - “2 5 5 3”和“4 7 2 4”,答案必须是“4 5 2 2”,但程序告诉我答案是“4 7 2 1“不可能!请帮我找错,我看不到。 我的程序代码:
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Linq;
using System.Text;
namespace MyProgramm
{
class Rectangles
{
private List<Rectangle> List = new List<Rectangle>();
public void AddRectangle(int X, int Y, int Width, int Height)
{
List.Add(new Rectangle(X, Y, Width, Height));
}
public int[] CrossRectangles()
{
if (List.Count != 0)
{
if (List.Count != 1)
{
Rectangle answer = List [0];
for (int i = 1; i < List.Count; i++)
answer.Intersect(List[i]);
return new int[] { answer.X, answer.Y, answer.Width, answer.Height };
}else
return new int[] { List.First().X, List.First().Y, List.First().Width, List.First().Height };
}else
return new int[] { 0, 0, 0, 0 };
}
}
class Program
{
static void Main(string[] args)
{
Rectangles P = new Rectangles();
P.AddRectangle(2, 5, 5, 3);
P.AddRectangle(4, 7, 2, 4);
foreach (int num in P.CrossRectangles())
Console.WriteLine(num);
}
}
}
答案 0 :(得分:5)
节目是对的,好的答案是&#34; 4 7 2 1&#34;。
很可能你对第二对参数的宽度和高度感到困惑,而不是&#34;右上角&#34;角。
但是在一张纸上绘制矩形,你会看到答案实际上是&#34; 4 7 2 1&#34;。
答案 1 :(得分:4)
这对我来说是正确的。
这是一个图形版本:
123456789 123456789 123456789
1......... 1......... 1.........
2......... 2......... 2.........
3......... 3......... 3.........
4......... 4......... 4.........
5.│││││... 5......... 5.│││││...
6.│││││... 6......... 6.│││││...
7.│││││... 7...──.... 7.││┼┼│...
8......... 8...──.... 8...──....
9......... 9...──.... 9...──....
X......... X...──.... X...──....
正如您可以清楚地看到的那样,交点确实位于坐标{4,7}处,尺寸为2x1。