zoukankan      html  css  js  c++  java
  • 【动态规划】矩形嵌套

    问题 C: 

    时间限制: 1 Sec  内存限制: 128 MB
    提交: 36  解决: 12
    [提交][状态][讨论版]

    题目描述

    有n个矩形,每个矩形可以用a,b来描述,表示长和宽。矩形X(a,b)可以嵌套在矩形Y(c,d)中当且仅当a<c,b<d或者 b<c,a<d(相当于旋转X90度)。例如(1,5)可以嵌套在(6,2)内,但不能嵌套在(3,4)中。你的任务是选出尽可能多的矩形排 成一行,使得除最后一个外,每一个矩形都可以嵌套在下一个矩形内。

    输入

    第一行是一个正正数N(0<N<10),表示测试数据组数,
    每组测试数据的第一行是一个正正数n,表示该组测试数据中含有矩形的个数(n<=1000)
    随后的n行,每行有两个数a,b(0<a,b<100),表示矩形的长和宽

    输出

    每组测试数据都输出一个数,表示最多符合条件的矩形数目,每组输出占一行

    样例输入

    1
    10
    1 2
    2 4
    5 8
    6 10
    7 9
    3 1
    5 8
    12 10
    9 7
    2 2
    

    样例输出

    5
    解题思路:参考最大递增子序列和。

    代码:
    #include <iostream>
    #include <cstdio>
    #include <cstring>
    #include <algorithm>
    
    using namespace std;
    
    typedef struct node{
        int x;
        int y;
    };
    node juxing[1005];
    
    int cmp(node a,node b){
        return a.x<b.x || a.x==b.x&&a.y<b.y;
    }
    
    int main()
    {
        int N;
        int n;
        int ans;
        int maxx;
        int sum[1005];
        scanf("%d",&N);
        while(N--){
            scanf("%d",&n);
            for(int i=0;i<n;i++){
                scanf("%d %d",&juxing[i].x,&juxing[i].y);
                if(juxing[i].x<juxing[i].y){
                    int temp=juxing[i].x;
                    juxing[i].x=juxing[i].y;
                    juxing[i].y=temp;
                }
                sum[i]=1;
            }
            sort(juxing,juxing+n,cmp);
            maxx=1;
            for(int i=1;i<n;i++){
                ans=0;
                for(int j=0;j<i;j++){
                    if(juxing[j].x<juxing[i].x&&juxing[j].y<juxing[i].y){
                        ans=max(sum[j],ans);
                    }
                }
                sum[i]=ans+1;
                maxx=max(sum[i],maxx);
            }
            printf("%d
    ",maxx);
        }
        return 0;
    }


  • 相关阅读:
    任务Task系列之Parallel的静态For,ForEach,Invoke方法
    任务Task系列之使用CancellationToken取消Task
    泛型基础
    串的两种模式匹配算法
    数据结构之串类型
    c#基础知识之设计类型
    挣脱
    数据结构之栈和队列
    数据结构之线性表
    NGUI背包系统
  • 原文地址:https://www.cnblogs.com/TWS-YIFEI/p/5725391.html
Copyright © 2011-2022 走看看