class Program
    {
        static void Main(string[] args)
        {
            int rectCount =2;
            IList<Rectangle> rects = new List<Rectangle>();
            rects.Add(new Rectangle(0, 0, 2, 2));
            rects.Add(new Rectangle(1, 1, 3, 3));
            //rects.Add(new Rectangle(2, 2, 4, 4));
            UnionRect(rectCount, rects);
            Console.Read();
        }
        static void UnionRect(int ct, IList<Rectangle> rects)
        {
            List<int> x = new List<int>();
            List<int> y = new List<int>();
            foreach (Rectangle r in rects)
            {
                x.Add(r.X1);
                x.Add(r.X2);
                y.Add(r.Y1);
                y.Add(r.Y2);
            }
            x.Sort();
            y.Sort();
            int s = 0;
            for (int i = 1; i <= ct * 2 - 1; i++)
            {
                for (int j = 1; j <= ct * 2 - 1; j++)
                {
                    Rectangle r = new Rectangle(x[i - 1], y[j - 1], x[i], y[j]);
                    foreach (Rectangle re in rects)
                    {
                        if (re.Contain(r))
                        {
                            s += r.Squre();
                            break;
                        }
                    }
                }
            }
            Console.WriteLine("面积:{0}", s);
        }
    }
    public class Rectangle
    {
        public int X1 { get; set; }
        public int X2 { get; set; }
        public int Y1 { get; set; }
        public int Y2 { get; set; }
        public Rectangle(int x1, int y1, int x2, int y2)
        {
            X1 = x1;
            X2 = x2;
            Y1 = y1;
            Y2 = y2;
        }
        //面积
        public int Squre()
        {
            return (X2 - X1) * (Y2 - Y1);
        }
        //是否包含矩形
        public bool Contain(Rectangle smallRect)
        {
            return smallRect.X1 >= this.X1 && smallRect.X2 <= this.X2 && smallRect.Y1 >= this.Y1 && smallRect.Y2 <= this.Y2;
        }
    }
留个记录,求平面内多个矩形的并积,返回面积。
第一次 思路 想以两两运算,发现走不通。
第二次 参考网友思路,分成小块来运算。
    声明本博客文章未特殊注明均为原创,转载请注明作者和原地址。
博客地址:http://www.cnblogs.com/gw2010/
博客首发:http://www.zhou2019.cn
                    
                
                
            
        
浙公网安备 33010602011771号