自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(14)
  • 收藏
  • 关注

原创 LeetCode第20题之Valid Parentheses

方法一:用栈实现 C++代码:#include <stack>#include <iostream>using namespace std;//Given a string containing just the characters '(', ')', '{', '}', '[' and ']', determine if the input string is valid.class S

2016-05-31 09:15:17 369

原创 LeetCode第19题之 Remove Nth Node From End of List

Given a linked list, remove the nth node from the end of list and return its head.For example,Given linked list: 1->2->3->4->5, and n = 2.After removing the second node from the end, the linked list be

2016-05-30 21:39:10 308

原创 LeetCode第18题之4Sum

Given an array S of n integers, are there elements a, b, c, and d in S such that a + b + c + d = target? Find all unique quadruplets in the array which gives the sum of target.Note: Elements in a quad

2016-05-27 12:46:56 343

原创 背包问题之6

背包问题之5中的算法只给出了最大利润的值,而没有给出最大利润下,背包所装物品的方案。下面除了通过回溯算法改进上一个算法的效率,还实现了给出背包所装物品方案的功能。 算法思想: 为找到最大的获利情况,先用最简单的蛮力算法回溯法来解决这个问题。不同于递归算法,递归算法是找大规模问题与小规模问题的关系,回溯法是对问题解空间进行搜索的算法。 C++代码:#include <iostream>#inc

2016-05-18 21:34:53 461

原创 背包问题之5

0/1背包问题:问题同背包问题4,只是约定物品不允许拆零。 算法设计5:递归枚举解0/1背包问题。 算法5的设计思想与背包问题3类似,为找出大规模与小规模问题的关系,对于每一件物品考虑仅有两种可能“选择或不选择”,当然选择某物品的前提是背包容量可以容纳它。 C++代码:#include <iostream>#include <vector>using namespace std;//此函数

2016-05-18 20:22:47 325

原创 背包问题之4

部分背包问题:一个商人带着一个能装m千克的背包去向下收购货物,准备将这些货物卖到城里获利。现有n种货源,且知第i种货物有wi千克,可获利pi元。请编写算法帮助商人收购货物,以获取最高的利润。**算法设计:贪婪算法。 当w1+w2+……+wn小于等于m时,收购所有货物即可,但出现了w1+w2+……+wn大于m的情况,商人只能选择一些货物购买,假设每种货物都可以分成需要的任意一小部分放入背包(这类问题

2016-05-16 22:05:14 799

原创 背包问题之3

设有一个背包可以放入的物品重量为S,现有n件物品,重量分别为w1,w2,w3,……,wn。问:能否从这n件物品中选择若干件放入次背包,使得放入的重量之和正好为S。如果存在一种符合上述要求的选择,则称此背包问题有解(或称解为“真”),否则此问题无解(或解为“假”)。算法设计:递归枚举 背包问题3与背包问题1,2的根本差别在于:背包问题1所选的物品件数是固定的常量,备选物品件数可以是可知的变量

2016-05-16 20:57:18 2935

原创 背包问题之2

小明有一只能装10千克的背包,现在有白菜一颗5千克,猪肉一块2千克,酱油1.7千克,一条鱼3.5千克,白糖一袋1千克,菜油一桶5.1千克。请编写一个算法,设计小明的背包所装东西的总重量最重。 算法思想: 在上一种背包问题中固定选取3种物品,可以用三重循环枚举这3件物品,从中找到问题的解。该例就无法照搬上面的算法了,但仍然可以延用上一种背包问题的设计方法。既然固定项的各种情况可以进行枚举,

2016-05-13 19:49:50 930

原创 背包问题之1

在9件物品中选出3件使其重量和与700克之差的绝对值最小。这里有在n个数中找出r个数的组合的两种方法,根据这两种方法对上面的问题对应有两种解法,下面给出的代码只是其中一种。C++源代码: 算法说明:嵌套循环中i,j,k的变化过程如下: (0,1,2)、(0,1,3)、……、(0,1,8) (0,2,3)、…

2016-05-13 19:14:08 528

原创 猴子选大王(3种超简单的方法)

17个猴子围成一圈,从某个开始报数1-2-3-1-2-3-……报“3”的猴子就被淘汰,游戏一直进行到圈内只剩一只猴子它就是猴大王了。方法一: 小技巧:用数组来记录猴子是否在圈内的状态:在圈内记为“1”,不在圈内记为“0”。并以累加数组元素值来模拟报数过程,这样就减少了判断猴子是否在圈内的操作。 C++代码如下:#include <iostream>#include <vector>using

2016-05-09 11:54:01 67574 3

原创 有两艘船需要装运的n箱货物,第一艘船的载重量是c1,第二艘船的载重量是c2,wi是货箱i的重量,且w1+w2+……+wn<=c1+c2。

希望确定是否有一种可将所有n个货箱全部装船的方法。若有的话,找出该方法。 主要思想:即求第一艘船的最大装载量问题。每种货物有装和不装两种情况,n个货物的取舍组合共2^n次个分支。 C++代码:#include <iostream>#include <queue>#include <vector>using namespace std;double MaxLoading(const vect

2016-05-06 21:37:10 5245 1

原创 找出1到n所有不重复的排列,即n的全排列。

解法一:#include <iostream>#include <vector>using namespace std;//打印结果void printSolution(const vector<int> &v){ for (vector<int>::const_iterator it = v.begin();it != v.end();++it) { co

2016-05-05 21:20:18 6305

原创 素数环问题

把从1到20这20个数摆成一个环,要求相邻的两个数的和是一个素数。 C++代码:#include <iostream>#include <vector>#include <cmath>using namespace std;//打印结果void printSolution(const vector<int> &v){ for (vector<int>::const_iterat

2016-05-05 19:55:40 577

原创 8皇后问题的两种解法

C++代码: 解法一:#include <iostream>#include <vector>using namespace std;bool check(const vector<int> &v, int k){ for (int i=0;i<k;++i) { //如果第i个和第k个的皇后同在主对角线或者副对角线或者同在一列 if (abs(

2016-05-04 17:21:15 3376

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除