搜索和动态规划是算法界的两座大山。 搜索本质上是一种遍历,是对每一种情况操作一遍。 T1 迷宫(dfs) 是好题,一道用dfs的好题。 #include <iostream> #include <cstring> using namespace std; int n,m,t; int movex[5]={0,1,0,-1,0};…
只学了链表,栈,和 map。(理直气壮) T1 队列安排 要用手写一种很新的东西存数据。每个同学自带左手和右手,于是用链表完成对队列的操作。 代码如下。 #include <iostream> using namespace std; const int N=1e6+5; struct hand{ int l,r; };//同学的左手和…
顺序查找时间复杂度为O(n),在数据量为1e8左右时计算机能在1s内处理完毕,但数据量为1e9及以上的时候,仍采用顺序查找对于计算机就比较吃力了,效率相当低。 二分查找有个很重要的特点,就是不会查找数列的全部元素,而查找的数据量其实正好符合元素的对数,正常情况下每次查找的元素都在一半一半地减少。在最坏的情况和一般情况下都比顺序查找要快。 使用二分查…
01背包——>拿或不拿的问题。 问题:有N件体积为v,价值为w的物品。和一个体积为V的背包,求解将哪些物品装入背包,可使这些物品的总体积不超过背包容量,且总价值最大。输出最大价值。 可以先定义一个二维数组dp[i][j]表示在第i件物品,体积为j的时候的总价值。可以推出状态转移方程: dp[i][j]=max ( dp[i-1][j] , d…