俄罗斯套娃程序

题目:

C++:

#include <iostream>
#include <algorithm>
#include <memory.h>
using namespace std;

bool cmp(int *p, int *q)
{
    if(p[0] == q[0]) return p[1] < q[1];
    else return p[0] < q[0];
}

int main(void)
{
    int n = 0;
    cin>> n;
    int **a = new int*[n];
    for (int i = 0; i < n; ++i) {
        a[i] = new int[2];
        cin>>a[i][0];
        cin>>a[i][1];
    }
    sort(a, a + n, cmp);

    int res[n];
    memset(res, 0, sizeof(res));
    int ans = 0;
    for(int i = 0; i < n; i++){
        if(res[i] == 0){
            int h = a[i][0];
            int w = a[i][1];
            int last = i;
            for(int j = i + 1; j < n; j++){
                if(a[j][0] > h && a[j][1] > w){
                    res[j] = res[last] + 1;
                    last = j;
                    h = a[j][0];
                    w = a[j][1];
                }
            }
            ans = max(ans, res[last] + 1);
        }
    }
    cout<<ans<<endl;
    delete a;
    a = NULL;
    return 0;
}

注意对int **二维数组的使用, 基数排序.

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,779评论 18 399
  • 指针是C语言中广泛使用的一种数据类型。 运用指针编程是C语言最主要的风格之一。利用指针变量可以表示各种数据结构; ...
    朱森阅读 3,479评论 3 44
  • 首先总结以下Java和C、C++中的一般控制台输入方式,方便以后的编程题: java键盘输入 java读文件(会自...
    androidjp阅读 2,327评论 0 16
  • 朝霞宣告今天的到来, 重生,今天晴天一片。 呼吸着新鲜空气, 抬头看看广阔天空。 下雨的时候停下来休息一下, 前面...
    煜煜煜阅读 233评论 0 1
  • 人物 胡斐、阎基、田归农、程灵素 秘籍 胡家刀法、苗家剑法、药王神掌、黑血神针 物品 无 剧情 招胡斐(主角单挑)...
    秋沫阅读 761评论 0 2