雅虎书面问题——最大的问题汇总

总结:sort功能在日常编程,经常使用;同时。内存初始化函数,常常被用来fill,在本节。我们计算LIS作为一个例子来解释这两个函数的应用。

样例:有一些老鼠,有x和y两个属性,如今要选择一个最大集合。当中从前到后,老鼠的x属性依次递减,y属性依次递增。

分析:假设我们先依照x属性递减排列,那么形成一个数组,然后问题就转化为求解这个数组中y属性递增排列的最长字串。于是转化为一个动态规划问题。

关键点2:在动态规划的解法中。我们只记录了最长的集合长度,那么怎样将集合恢复出来?这里,我们用到了“前缀树”的思想:在非常多搜索结构中,我们往往须要搜索一种路径。然而,从某个点開始的路径可能有非常多条。可是每一个点的前缀节点唯独一个。在这样的情况下,我们只须要记录某个节点的前缀节点,然后就能恢复出来这条路径。

写这道题目的时候。犯下的错误:

sort函数的递减排列;

memset函数,開始使用这个函数对int类型进行了非零的初始化。比方memset(len, 1, 12*4);想想这里为什么出错?这个函数的定义式子是什么样的?

详细的算法例如以下:

#include <iostream>
#include <iomanip>
#include <vector>
#include<cstring>
#include <string>
#include <algorithm>
#include <cstdlib>
#include <cmath>
#include <stack>
#include <climits>

using namespace std;
struct mice{
	int x;
	int y;
	mice(){}
	mice(int x1, int y1):x(x1), y(y1){}
};

struct mycom{
	bool operator()(mice a, mice b)const{
		return (b.x<a.x);
	}
}Com;

int main(int argc, char *argv[])
{
	mice my[12];
	int i, res=-1, resindex=-1;
	for (i = 0; i < 12; ++i){
		my[i]=mice(rand()%100, rand()%100);
	}
	sort(my, my+12, Com);

	int len[12];
	fill(len, len+12, 1);

	int pre[12];
	memset(pre, -1, 12*4);
	fill(pre, pre+12, -1);

	for (int i = 1; i < 12; ++i){
		for(int k=0; k<i;k++){
			if(my[i].y > my[k].y && len[k]+1 > len[i]){
				len[i]=len[k]+1;
				pre[i]=k;
			}
		}
		if(len[i]>res){
			res= len[i];
			resindex = i;
		}
	}
	stack<int> s;
	int curindex=resindex;
	while(curindex!=-1){
		s.push(curindex);
		curindex = pre[curindex];
	}
	cout << res <<endl;
	while(s.empty()==false){
		int index= s.top();
		s.pop();
		cout << my[index].x << " " <<my[index].y <<endl;
	}
	return 0;
}
时间: 2024-10-29 19:11:46

雅虎书面问题——最大的问题汇总的相关文章

【转载】.NET程序员走向高端必读书单汇总

原文:.NET程序员走向高端必读书单汇总 .NET程序员走向高端必读书单汇总 一.知识树 1. 基本能力 1.1 数学 1.2 英语 1.3 语言表达 2. 计算机组织与体系结构 3. 算法与数据结构 4. 操作系统 5. 计算机网络 6. 信息管理 7. 开发语言及框架(以.net平台为例) 8. 软件工程 二.学习方法 三.后记 如今程序开发工作越来越简单(丰富的API.智能的IDE.越来越多的开发框架),普通人通过简单的训练,通过组合和复制就能完成众多程序的功能.因此程序员这种过去高技术职

前端资源汇总[转载]

JavaScript 框架/库 Animations vivus:可以动态描绘 SVG 的 JS 库, 支持多种动画 Web Animation:Javascript 实现的 Web Animation API scrollReveal.js:使元素以非常酷帅的方式进入画布 (Viewpoint) snabbt.js:一个利用 Javascript 和 CSS transform 的 animation 库 matter-js:2D 物理效果引擎,碰撞.弹跳等 parallax:一个用于响应智能

网站代码、图片优化汇总

刚刚写了一个项目,但页面加载速度出现了问题,所以研究了一下页面加载的速度,看了很多资料,大致汇总了一下,希望和小伙伴一起学习进步; 一.图片: 1.图片精灵: 将导航或是模块的小图片放在一起,通过background-position定位减少http请求 2.压缩图片(压缩工具网址): 简易版:http://www.tuhaokuai.com/image imageMagic图片处理工具:http://www.imagemagick.org/script/index.php 3.尽量使用gif格

关于OpenStack的学习路线及相关资源汇总

首先我们想学习openstack,那么openstack是什么?能干什么?涉及的初衷是什么?由什么来组成?刚接触openstack,说openstack不是一个软件,而是由多个组件进行组合,这是一个更深层次的理解,当我们看到dashboard的时候,我们或许对openstack感觉有一点感性认识了.dashboard可以理解为openstack与用户交流的一个窗口,而dashboard对于真正的使用者来讲,它的功能上面有一定的局限性.而对于初学者通过它,可能会对openstack有一定的了解.o

性能测试分析软件汇总–开源、商业全部收集

本文共包含:商业性能测试.监控.分析工具和免费.开源性能测试监控分析工具:共涉及java.php.net等各种开发语言平台,有系统性能分析.文件系统分析.微博.系统分析.数据性能分析等各种工具,可以说本文包含了现有的所有的性能测试监控分析工具工具133种. Java程序性能分析工具 VisualVM VisualVM是一个集成多个JDK命令行工具的可视化工具.可以作为Java应用程序性能分析和运行监控的工具.开发人员可以利用它来监控.分析线程信息,浏览内存堆数据.系统管理员可以利用它来监测.控制

【转】自学成才秘籍!机器学习&amp;深度学习经典资料汇总

小编都深深的震惊了,到底是谁那么好整理了那么多干货性的书籍.小编对此人表示崇高的敬意,小编不是文章的生产者,只是文章的搬运工. <Brief History of Machine Learning> 介绍:这是一篇介绍机器学习历史的文章,介绍很全面,从感知机.神经网络.决策树.SVM.Adaboost到随机森林.Deep Learning. <Deep Learning in Neural Networks: An Overview> 介绍:这是瑞士人工智能实验室Jurgen Sc

推荐系统知识点汇总

整理归纳一下<推荐系统实践>和<推荐系统导论>两本书的知识点,文中排版格式可能会有点乱,如有问题请指正.OK,闲话不说,先上2张图 对推荐系统的建模数据进行分析,代表型数据:1)无上下文的隐形反馈数据:2) 无上下文的显性反馈数据:3) 有上下文的隐形反馈数据:4)有小上下文的显性反馈数据,其中显性的反馈数据就是用户对物品的评分,而隐形的就是用户对物品的浏览,时长等数据(不同的领域,用户对物品的行为种类不一样),像我之前的做的都全是用有上下文的隐形反馈,都是通过点击.登陆.时长归纳

[转]机器学习和深度学习资料汇总【01】

本文转自:http://blog.csdn.net/sinat_34707539/article/details/52105681 <Brief History of Machine Learning> 介绍:这是一篇介绍机器学习历史的文章,介绍很全面,从感知机.神经网络.决策树.SVM.Adaboost到随机森林.Deep Learning. <Deep Learning in Neural Networks: An Overview> 介绍:这是瑞士人工智能实验室Jurgen

[转载]机器学习&amp;深度学习经典资料汇总,全到让人震惊

自学成才秘籍!机器学习&深度学习经典资料汇总 转自:中国大数据: http://www.thebigdata.cn/JiShuBoKe/13299.html [日期:2015-01-27] 来源:亚马逊  作者: [字体:大 中 小] 小编都深深的震惊了,到底是谁那么好整理了那么多干货性的书籍.小编对此人表示崇高的敬意,小编不是文章的生产者,只是文章的搬运工. <Brief History of Machine Learning> 介绍:这是一篇介绍机器学习历史的文章,介绍很全面,从感