11.7 有个马戏团正在设计叠罗汉的表演节目,一个人要站在另一人的肩膀上。处于实际和美观的考虑,在上面的人要比下面的人矮一点、轻一点。已知马戏团每个人的高度和重量,请编写代码计算叠罗汉最多能叠几个人。

如果要保持相对顺序不变,那么不能直接排序。

C++实现代码:

#include<iostream>
#include<vector>
using namespace std; struct people
{
int weight;
int lenght;
people(int w,int l):weight(w),lenght(l){}
}; bool isValid(vector<people> &path,people &p)
{
if(path.empty())
return true;
people tmp=path.back();
return p.lenght<tmp.lenght&&p.weight<tmp.weight;
} void helper(vector<people> &pp,int start,int &longSequence,vector<people> &path)
{
if(start==pp.size())
{
if(longSequence<path.size())
longSequence=path.size();
return;
}
int i;
for(i=start;i<pp.size();i++)
{
//该条件可以不成立,因此不能进入递归
if(isValid(path,pp[i]))
{
path.push_back(pp[i]);
helper(pp,i+,longSequence,path);
path.pop_back();
}
}
} int getIncreasingSequence(vector<people> &pp)
{
int longSequence=;
vector<people> path;
helper(pp,,longSequence,path);
return longSequence;
} int main()
{
vector<people> p={people(,),people(,),people(,),people(,)};
cout<<getIncreasingSequence(p)<<endl;
}

careercup-排序和查找 11.7的更多相关文章

  1. C++ 排序、查找的应用

    // order.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include "string.h" #includ ...

  2. leetcode题解:Search in Rotated Sorted Array(旋转排序数组查找)

    题目: Suppose a sorted array is rotated at some pivot unknown to you beforehand. (i.e., 0 1 2 4 5 6 7  ...

  3. 006-筛选分类排序搜索查找Filter-Classificatio-Sort-Search-Find-Seek-Locate

    006-筛选分类排序搜索查找Filter-Classificatio-Sort-Search-Find-Seek-Locate https://www.cnblogs.com/delphixx/p/1 ...

  4. Golang的排序和查找

    Golang的排序和查找 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.排序的基本介绍 排序是将一组数据,依指定的顺序进行排列的过程.排序的分类如下 1>.内部排序 指将 ...

  5. UVA.10474 Where is the Marble ( 排序 二分查找 )

    UVA.10474 Where is the Marble ( 排序 二分查找 ) 题意分析 大水题一道.排序好找到第一个目标数字的位置,返回其下标即可.暴力可过,强行写了一发BS,发现错误百出.应了 ...

  6. vector向量容器元素排序与查找

    1.利用标准库函数sort()对vector进行排序 参考源码: #include <algorithm> #include <vector> vector<int> ...

  7. 九度OJ 1174:查找第K小数 (排序、查找)

    时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:6376 解决:2539 题目描述: 查找一个数组的第K小的数,注意同样大小算一样大.  如  2 1 3 4 5 2 第三小数为3. 输入: ...

  8. NumPy 排序、查找、计数

    章节 Numpy 介绍 Numpy 安装 NumPy ndarray NumPy 数据类型 NumPy 数组创建 NumPy 基于已有数据创建数组 NumPy 基于数值区间创建数组 NumPy 数组切 ...

  9. 基于python常用排序与查找

    """ 排序与查找 -- 冒泡排序 -- 选择排序 -- 快速排序 --****经典 -- 希尔排序 """ # 常用排序的实现 # 冒泡排 ...

  10. 9.11排序与查找(三)——给定一个排序后的数组,包括n个整数,但这个数组已被旋转过多次,找出数组中的某个元素

    /**  * 功能:给定一个排序后的数组.包括n个整数.但这个数组已被旋转过多次,次数不详.找出数组中的某个元素.  * 能够假定数组元素原先是按从小到大的顺序排列的.  */ /** * 思路:数组 ...

随机推荐

  1. CQOIX2007余数之和

    朴素能得个差不多吧…… 这题改进算法真恶心 pascal一直过不了,难道非得转c++? 代码:(pascal) var n,k,i,l,r,m:longint; ans:qword; function ...

  2. HDU 5280 Senior's Array (暴力,水)

    题意:给一个数列,再给一个数字p,要求p一定要替换掉数列中的一个元素,然后求最大连续子序列之和. 思路:1000*1000的复杂度,O(n*n) .就是每个都试,然后求和. #include < ...

  3. (一)学习JavaScript之setTimeout方法

    参考:http://www.w3school.com.cn/jsref/met_win_settimeout.asp HTML DOM Window 对象 定义和用法 setTimeout() 方法用 ...

  4. (十一)学习CSS之float属性

    参考:http://www.w3school.com.cn/cssref/pr_class_float.asp 定义和用法 float 属性定义元素在哪个方向浮动.以往这个属性总应用于图像,使文本围绕 ...

  5. HDU 3001 Travelling 3进制状压dp

    题意:10个点,若干条边,边有花费,每个点最多走两次,求走过所有点,花费最少 分析:因为每个点最多走两次,所以联想到3进制,然后枚举状态,就行了(我也是照着网上大神的代码写的) #include &l ...

  6. ZOJ Light Bulb - 3203

    题意:人左右走动,求影子L的最长长度. 思路:三分人在D上的位置.注意影子长=D-x+H-(H-h)*D/x. #include<iostream> #include<stdio.h ...

  7. C# 调用Dll 传递字符串指针参(转)

    http://www.cnblogs.com/jxsoft/archive/2011/07/06/2099061.html

  8. 问题-Delphi 中使用TStringList后,报out of memory 的解决方法

    问题现象: 请一段开发个项目 程序调试全部通过但测试时出现个问题 “out of memory” 在长时间运行时!后来终于解决 :很简单其实就是object.create时对象没有释放. 代码如下: ...

  9. hdoj 1213 How Many Tables

    How Many Tables Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)T ...

  10. [Objective-c 基础 - 2.3] 继承、组合

    A.继承的实现: is a 1.不允许子类.父类存在相同的成员变量 2.方法调用优先原则:子类调用方法的时候,优先从本类寻找,若无则向上在父类中寻找 3.重写:子类重新实现父类的方法,覆盖父类之前的方 ...