基础算法
悟空 AI
这个作者很懒,什么都没留下…
展开
-
牛客网-腾讯2017笔试-编码
题目链接:题目#include<iostream>using namespace std;/**************** 分析 ******************/// 第一步,在草稿纸上画出编码的字典顺序表// 第二步,观察规律// 第三步,思考策略:// 由大到小,先确定大范围,再确定小范围,即:// 先根据第一位字符确定前面有多少个元素,再根据第二位字符...原创 2018-12-01 10:58:22 · 529 阅读 · 0 评论 -
网易2019笔试-丰收
题目描述:又到了丰收的季节,恰逢小易去牛牛的果园里游玩。牛牛常说他对整个果园的每个地方都了如指掌,小易不太相信,所以他想考考牛牛。在果园里有N堆苹果,每堆苹果的数量为ai,小易希望知道从左往右数第x个苹果是属于哪一堆的。牛牛觉得这个问题太简单,所以希望你来替他回答。输入描述:第一行一个数n(1 <= n <= 105)。第二行n个数ai(1 <= ai <= ...原创 2019-08-06 10:26:53 · 186 阅读 · 0 评论 -
网易2019校招笔试题-瞌睡
分析:由于小易清醒的时间是连续的,所以整个搜索空间为O(n),根本不需要贪心或者动态规划就能搞定。 小易这堂课获得的兴趣值分为两部分:本来就清醒时获得的兴趣值,被叫醒的k分钟获得的兴趣值。因为第一部分是固定的,所以当第二部分最大时,整体取最大值。思路:第一部分的兴趣值为 fixed_gain,第二部分,如果在第i分钟叫醒小易,额外获得的兴趣值为gain[i],gain[i]和gain[i-1]的...原创 2019-08-04 11:44:12 · 2860 阅读 · 0 评论 -
网易2019笔试题-牛牛的背包
题目解析核心思路物品有n个,每个体积为 v[i],背包体积为 w. 每个物品有两种选择:放进背包,不放进背包。状态设计:f(i,j):物品为前i个物品,背包体积为j,一共多少种放法。状态转移:如果第i个物品放进背包:f(i-1,j-v[i])如果第i个物品不放进背包:f(i-1,j)因此:f(i,j) = f(i-1,j-v[i]) + f(i-1,j)难点分析:本题的数...原创 2019-07-31 10:11:38 · 270 阅读 · 0 评论 -
POJ_1276_多重背包
#include<iostream>#include<string.h>using namespace std;/********************* 多重背包问题 ************************///n = a0•2k + a 1•2k−1 + … + a k−1•21 + ak•20,其中a0 = 1,a1,a2,…,ak∈{ 0,1 ...原创 2018-12-28 13:44:46 · 166 阅读 · 0 评论 -
POJ 1328 Radar Installation 贪心算法
代码如下:// 贪心算法#include<iostream>#include<algorithm>#include<math.h>using namespace std;// 包含左右端点struct interval{ double left; double right;};interval intervals[1002];...原创 2018-12-21 13:46:05 · 467 阅读 · 0 评论 -
poj 1321 棋盘问题
/** 1. 题目描述:* 给定一个不规则的棋盘,在棋盘上放置k个棋子,要求任意两个棋子不能在同一行或者同一列,输出可行的摆放方法数目。* 2. 问题分析:* 摆放k个棋子,本质上来说,是一个k阶段决策问题。* 因为:(1)不是最优化问题; (2)有明显的后效性, 所以不能用动态规划* 于是想到用 深度优先搜索* 3. 需要注意的问题* 3.1 如何区分不同的方案 ?* ...原创 2018-08-13 12:30:31 · 241 阅读 · 0 评论 -
POJ 2362 Square 深度优先
大致题意:有一堆任意长度的小棒子,问他们能否构成一个正方形。 解题思路:与 POJ 1011 Sticks 神似啊,但是简单一点。// POJ 1011 的精简版//#include "stdafx.h"#include<iostream>#include<string.h>#include<algorithm>using n...原创 2018-12-20 11:21:39 · 238 阅读 · 0 评论 -
基础算法系列之深度优先搜索
在计算机的基础算法领域,深度优先搜索无疑是非常重要的一种编程方法,它的作用和价值,类似于常规算法中的排序,具有两个特点: (1)常用。当我们需要搜索问题的解决方案时,最常用的只有两种方法:深度优先搜索和广度优先搜索; (2)标准化。与快速排序类似,虽然实现的方法千变万化,但是遵循固定的步骤,第一步做什么,第二步做什么,都非常的明确。所以呢,只要吃透几个经典的问题,有...原创 2018-11-28 20:12:56 · 346 阅读 · 0 评论 -
快手2019校招笔试题
目的:分别从前面和后面开始找划分点,使得前面的数字之和 = 后面的数字之和目标表述:sum( 前面m 个数 ) = sum( 后面n个数) s.t. m+n <= N(总个数)变形:sum[i] 表示前 i 个数之和,sum2[i]表示后 i 个数之和如果 sum[m] == sum2[n] ,s.t., m+n <= N,问题解决!#include <iostream&...原创 2019-08-19 10:41:48 · 2640 阅读 · 0 评论