11 2018 档案

摘要:广搜解决。广搜搜出最短路,直接输出返回就行了。每个点只搜一次,而且界限进行一次判断。else 语句里面不要用if else if,这样的话就直走一条路了。#include #include #include using namespace std;const i... 阅读全文
posted @ 2018-11-30 13:55 xyee 阅读(339) 评论(0) 推荐(0)
摘要:这道题目我们使用深搜加剪枝的方法来写,我们首先算出一个最小表面积和最小体积来,就是半径从一递增,高度也从一递增,这是题目要求。然后我们计算出一个底层最大的半径和最大的高度,我们就从这个最大半径和最大高度开始深度优先搜索,每一层的蛋糕都从最大半径开始深搜,然后内循环里面... 阅读全文
posted @ 2018-11-30 12:44 xyee 阅读(234) 评论(0) 推荐(0)
摘要:这道题目如果数据很小的话。我们通过这个dfs就可以完成深搜:void dfs(int s){ if (s==N) { minLen=min(minLen,totalLen); return ; } for (int i=0;iK) continue; if ... 阅读全文
posted @ 2018-11-29 15:52 xyee 阅读(190) 评论(0) 推荐(0)
摘要:这题目是一道深搜的题目,我们写一个递归函数叫Ways(int i, int j ,int n),i j就是当前所处的坐标,我们设置一个visited数组,简称 V 。对于这个数组,首先初始化为零,然后我们递归的边界条件就是走完输入的步数的时候,就返回一。如果没走完,就... 阅读全文
posted @ 2018-11-28 20:43 xyee 阅读(276) 评论(0) 推荐(0)
摘要:对于这道题目来说的话,我们的思路是这样的,我们首先把数据读进来,然后把color数组清零。我们的思路是这样的的,给每一个房间设置一个对应的color数组,然后color数组里面填满不同的数字,每一种数字都代表着一种联通的房间。相互联通房间里面,对应的color数组填的... 阅读全文
posted @ 2018-11-26 19:30 xyee 阅读(254) 评论(0) 推荐(0)
摘要:对于流操作运算符我们需要注意的是函数的返回类型应该是流输入类型的引用或者流输出类型的引用,因为如果代码是coutusing namespace std;class CFraction{ public: CFraction() { num... 阅读全文
posted @ 2018-11-25 18:23 xyee 阅读(1291) 评论(0) 推荐(0)
摘要:这个里面需要注意的是对于双目运算符,像是加号,如果是复数加整数是一种情况,而整数加复数又是另一种情况,所以需要重定义两次。而对于单目运算符,如果是前缀的,直接重定义就可以了,但是如果是后缀的,我们在声明的时候,加上一个 int 就行了。#include using n... 阅读全文
posted @ 2018-11-25 18:22 xyee 阅读(1805) 评论(0) 推荐(0)
摘要:代码其实很简单,我们只需要知道set类的使用方法就可以了,比如迭代器的定义( set::iterator it=a.begin() ),和简单的insert函数插入,以及find函数找到时返回对应的迭代器,找不到时返回该set的end。#include #includ... 阅读全文
posted @ 2018-11-25 18:20 xyee 阅读(769) 评论(0) 推荐(0)
摘要:它这个问题问的是,在有限的容量下,能装下的最大价值是多少。所以我们可以递归求解,记忆性递归,用二维数组,但是这样的话就会超内存,所以我们只能用动规来写,而且不能开二维数组,只能用滚动数组。我们设一个F数组,大小为13000,它存的是容积为m的背包可放下的最大价值。我们... 阅读全文
posted @ 2018-11-24 17:50 xyee 阅读(150) 评论(0) 推荐(0)
摘要:动态规划的话,我们中心思想就是,设一个num数组,num[ i ][ j ] 代表从i的大小中,取出 j 种物品的方法数。当不取j种物品的时候,我们就让num[ i ][ j ] =num[ i ][ j -1 ],并且此时,如果,i-a[j]>=0 的话,说明背包还... 阅读全文
posted @ 2018-11-24 15:21 xyee 阅读(182) 评论(0) 推荐(0)
摘要:这道题用递归写的话还是很好写的,我们设递归函数的名称为Ways(w,k) 。 它的含义就是,w的大小,取k个物品,有多少种方式。 我们可以知道递归的边界条件就是当w的大小为0的时候,我们的方法数只有一种,但是当我们要取0个物品的时候,我们的方法数就为0了,因为Ways(40,0),显然是0。 边界条 阅读全文
posted @ 2018-11-24 15:13 xyee 阅读(251) 评论(0) 推荐(0)
摘要:这道题用递归写的话还是很好写的,我们设递归函数的名称为Ways(w,k) 。它的含义就是,w的大小,取k个物品,有多少种方式。我们可以知道递归的边界条件就是当w的大小为0的时候,我们的方法数只有一种,但是当我们要... 阅读全文
posted @ 2018-11-24 15:13 xyee 阅读(86) 评论(0) 推荐(0)
摘要:这个题的意思就是说:给一个序列 A 和 B ,让你求他们的共同的子序列的长度,这些子序列可以不在原来的字符串中连续排列。这个题的话,我们可以使用动态规划的思路,我们假设 MaxLen [ i ] [ j ] 是 A 串和 B 串中从一开始的,A 串中的的第 i 个字符... 阅读全文
posted @ 2018-11-23 13:51 xyee 阅读(151) 评论(0) 推荐(0)
摘要:代码很容易看明白,就不详解了。这个是空间优化的代码。#include #include #define MAX 101 using namespace std;int D[MAX][MAX];int n;int *maxsum;int main(){ cin>>n; ... 阅读全文
posted @ 2018-11-18 13:59 xyee 阅读(131) 评论(0) 推荐(0)
摘要:这道题目并不能直接使用递归,因为 7(1) 7(1) 7(1) 7(1) 7(2) ... 阅读全文
posted @ 2018-11-17 20:44 xyee 阅读(134) 评论(0) 推荐(0)
摘要:快速排序是一种分治的思想。每次快速排序的时候,都是用第一个数来比较的,然后设置两个指针,一个i 一个 j ,一个指向首位,一个指向末尾。然后从末尾开始比较,如果 a [ j ] 大于a [ 0 ] 的话那就让j-... 阅读全文
posted @ 2018-11-17 16:55 xyee 阅读(93) 评论(0) 推荐(0)
摘要:快速排序是一种分治的思想。 每次快速排序的时候,都是用第一个数来比较的,然后设置两个指针,一个i 一个 j ,一个指向首位,一个指向末尾。 然后从末尾开始比较,如果 a [ j ] 大于a [ 0 ] 的话那就让j--,直到后面的数有一个小于 a [ 0 ],然后交换两个数的值。 这时候开始进行 i 阅读全文
posted @ 2018-11-17 16:55 xyee 阅读(117) 评论(0) 推荐(0)
摘要:异或运算就是 相同为零,不同为一。对于异或来说,设置一个变量a和变量b分别赋初值为3,那么 B(异或之后的结果)a=a^b; a 00 b 11b=a^b; a 0... 阅读全文
posted @ 2018-11-17 16:31 xyee 阅读(186) 评论(0) 推荐(0)
摘要:https://zh.wikipedia.org/wiki/%E5%BD%92%E5%B9%B6%E6%8E%92%E5%BA%8F先上一个网站,这个 网站最好看看。点开之后可以看到归并排序的动态演示图,只要能理... 阅读全文
posted @ 2018-11-17 16:25 xyee 阅读(94) 评论(0) 推荐(0)
摘要:https://zh.wikipedia.org/wiki/%E5%BD%92%E5%B9%B6%E6%8E%92%E5%BA%8F 先上一个网站,这个 网站最好看看。 点开之后可以看到归并排序的动态演示图,只要能理解这个图,就能够理解递归和归并排序了。 你可以看到图里面的数分了四层,然后变成八个数 阅读全文
posted @ 2018-11-17 16:25 xyee 阅读(622) 评论(0) 推荐(0)
摘要:#include #include #include #define max 8#define Elemtype intusing namespace std;typedef struct { Elemtype *base; int *bounds; int dim;... 阅读全文
posted @ 2018-11-11 11:34 xyee 阅读(922) 评论(0) 推荐(0)
摘要:总时间限制: 1000ms 内存限制: 65536kB描述树老师爬楼梯,他可以每次走1级或者2级,输入楼梯的级数,求不同的走法数例如:楼梯一共有3级,他可以每次都走一级,或者第一次走一级,第二次走两级也可以第一次... 阅读全文
posted @ 2018-11-08 15:46 xyee 阅读(154) 评论(0) 推荐(0)
摘要:总时间限制: 1000ms 内存限制: 65536kB 描述 树老师爬楼梯,他可以每次走1级或者2级,输入楼梯的级数,求不同的走法数 例如:楼梯一共有3级,他可以每次都走一级,或者第一次走一级,第二次走两级 也可以第一次走两级,第二次走一级,一共3种方法。 输入 输入包含若干行,每行包含一个正整数N 阅读全文
posted @ 2018-11-08 15:46 xyee 阅读(397) 评论(0) 推荐(0)
摘要:总时间限制: 1000ms 内存限制: 65536kB 描述 把M个同样的苹果放在N个同样的盘子里,允许有的盘子空着不放,问共有多少种不同的分法?(用K表示)5,1,1和1,5,1 是同一种分法。 输入 第一行是测试数据的数目t(0 <= t <= 20)。以下每行均包含二个整数M和N,以空格分开。 阅读全文
posted @ 2018-11-08 15:35 xyee 阅读(281) 评论(0) 推荐(0)
摘要:对于n个盘子,m个苹果,我们要么在每个盘子上都放苹果,要么至少有一个盘子不放。一个盘子不放就是f(m,n-1),全部都放的时候苹果就变成了n-m个,但是盘子的数目是不变的,因为此时还没有产生方案数,都放也等于不... 阅读全文
posted @ 2018-11-08 15:35 xyee 阅读(106) 评论(0) 推荐(0)
摘要:#include #include #include #include using namespace std;char oriLights[5];char Lights[5];char result[5];int GetBit(char c,int i){ ... 阅读全文
posted @ 2018-11-06 11:08 xyee 阅读(107) 评论(0) 推荐(0)
摘要:#include #include using namespace std;bool overflow=0;struct Queue { int date[300]; int head; int tail; int len;}queue;void InitQueue(... 阅读全文
posted @ 2018-11-05 22:10 xyee 阅读(164) 评论(0) 推荐(0)
摘要:#include #include using namespace std;struct SqList { int *elem; int length;};int InitList(SqList &L,int num){ L.elem = new i... 阅读全文
posted @ 2018-11-05 22:04 xyee 阅读(122) 评论(0) 推荐(0)
摘要:#include #include using namespace std;void StrAssign(char *T){ char ch; int i=1; cout>ch&&ch!='0') { T[i++]=ch; } T[0]=i-1+'0'; coutT... 阅读全文
posted @ 2018-11-05 22:03 xyee 阅读(129) 评论(0) 推荐(0)
摘要:#include #include using namespace std;void StrAssign(char *T){ char ch; int i=1; cout>ch&&ch!='0') { T[i++]=ch; } T[0]=i-1+'0'; coutT... 阅读全文
posted @ 2018-11-05 22:01 xyee 阅读(428) 评论(0) 推荐(0)
摘要:#include #include using namespace std;struct SqStack { char *base; char *top;};int cmp[10][10] = { {'>','>','','>'},//+ {'>','>','','>... 阅读全文
posted @ 2018-11-05 21:59 xyee 阅读(796) 评论(0) 推荐(0)
摘要:#include #include using namespace std;const int INIT_SIZE=100;const int INCREASE=10;struct SqStack { int *base; int *top; int stacksiz... 阅读全文
posted @ 2018-11-05 21:57 xyee 阅读(160) 评论(0) 推荐(0)
摘要:逆波兰表达式是一种把运算符前置的算术表达式(其实一般教科书上称这种表达式为波兰表达式),例如普通的表达式2 + 3的逆波兰表示法为+ 2 3。逆波兰 表达式的优点是运算符之间不必有优先级关系,也不必用括号改变运算... 阅读全文
posted @ 2018-11-05 21:54 xyee 阅读(281) 评论(0) 推荐(0)
摘要:逆波兰表达式是一种把运算符前置的算术表达式(其实一般教科书上称这种表达式为波兰表达式),例如普通的表达式2 + 3的逆波兰表示法为+ 2 3。逆波兰 表达式的优点是运算符之间不必有优先级关系,也不必用括号改变运算次序,例如 (2 + 3) * 4的逆波兰表示法为* + 2 3 4。本题求解逆波兰表达 阅读全文
posted @ 2018-11-05 21:54 xyee 阅读(495) 评论(0) 推荐(0)
摘要:主要是对位运算的操作,,每次加一。#include #include using namespace std;int main(){ int n, num, a[1024], b[1024][10], cnt, cmp,cnt1 = 0, cnt2 = 0, k = ... 阅读全文
posted @ 2018-11-04 19:42 xyee 阅读(643) 评论(0) 推荐(0)
摘要:问题:n皇后问题:输入整数n, 要求n个国际象棋的皇后,摆在 n*n的棋盘上,互相不能攻击,输出全部方案。#include using namespace std;int N;int queuePos[100];... 阅读全文
posted @ 2018-11-01 17:51 xyee 阅读(78) 评论(0) 推荐(0)
摘要:问题: n皇后问题:输入整数n, 要求n个国际象棋的皇后,摆在 n*n的棋盘上,互相不能攻击,输出全部方案。 其实递归就是另一种循环,因为不能写不定循环,所以用递归解决。 阅读全文
posted @ 2018-11-01 17:51 xyee 阅读(152) 评论(0) 推荐(0)