OJ
文章平均质量分 64
lixq05
这个作者很懒,什么都没留下…
展开
-
栈的应用
为了使用栈,得加上: #include<stack> using namespace std 题目一(典型题目) 括号匹配问题 输出原理字符串,并在下面标出不能匹配的括号。不能匹配的左括号用‘$’标记,不能匹配的右括号用’?’标记 我们按照从左至右的顺序遍历字符串,将遇到的左括号都放入堆栈中等待匹配;若在遍历过程中遇到一个右括号:若堆栈非空,则栈顶左括号与之匹配;相反...原创 2018-03-31 17:05:07 · 155 阅读 · 0 评论 -
图论
为了使用vector,需要在C++源文件添加 #include<vector> using namespace std; 用来表示一条边 struct Edge{ int nextNode; //下一个结点编号 int cost;// 该边的权重 }; 为每个结点都创建一个单链表 vector<Edge> edge[N]; 为这些单链表添加和...原创 2018-04-06 11:31:42 · 246 阅读 · 0 评论 -
数学问题---四
一、如何快速求得 a的b次方 将b分解成若干个 2^k的和且分解的个数最小———求b得二进制数 例如:求2^31: 31的二进制表示为 11111,即拆2^31次为 2的0次……的乘积 题目一: 求 A^B的最后三位表示的整数 注意: 仅保存最后三位数 从b的最低位开始依次求得b的各个二进制位,在当前二进制位位1的情况下将a累乘到ans上。在完成本位操作后对a求其平方计算下一位二进制...原创 2018-04-06 11:27:59 · 383 阅读 · 0 评论 -
数学问题(三)
一、最大公约数 就是求 a%c =0,b%c =0的最大正整数: 求解过程: ①:若a,b全部为0.则他们的最大公约数不存在 ②:若 a,b其中之一为0,则他们的最大公约数为 a,b中非零的那个 ③:若a,b都不为0,则使新 a=b;新的 b = a%b 然后重复该过程———-欧几里得算法 题目一: 输入两个正整数,求其最大公约数 #include<stdio.h>...原创 2018-04-04 17:01:16 · 401 阅读 · 0 评论 -
贪心算法
题目一:(典型题目) 购买商品 有m元钱,n种物品;每种物品有j磅,总价值f元。(可以使用0.3f购买0.3j物品) 输入:M,N 以及N 种物品的重量和总价格 输出:最多能买到多少磅物品 思路:每次购买剩余物品中性价比最高的物品 代码: #define _CRT_SECURE_NO_DEPRECATE /* 贪心算法:购买最多的商品 */ #include<stdio.h...原创 2018-03-28 16:55:59 · 378 阅读 · 0 评论 -
数学问题(二)
一、进制转换 从m进制转换到n进制 : ①从m进制转换到十进制 ②从十进制转换到n进制 十进制转换到其他进制 x = b0* 2^0 +b1*2^1…… 应用上章数位拆解的方法得到 b0,b1,b2: x%2=b0 这样就得到了该数字由二进制表示时的最低数位。然后不断对x做整除,除2,同样可以将高位数字向低位移动 x/2 = b1*2^0 +b2*2^1…… 将二进制...原创 2018-04-03 16:29:15 · 220 阅读 · 0 评论 -
数学问题
一、%运算符的使用 避免出现负余数:采用将余数加上出书再对除数求一次余即可。 r' = (r+b)%b; 在大数求模中,为了避免溢出: (a*b)%c = (a%c * b%c)%c (a+b)%c = (a%c + b%c)%c 例一: 还是A+B 在求A+B之前要判断一下,A和B的后K位数字是否相等,相等的话,输出-1 #include <stdio.h&...原创 2018-04-03 09:45:53 · 199 阅读 · 0 评论 -
Hash的应用
题目一: 统计同成绩学生个数 代码: #define _CRT_SECURE_NO_DEPRECATE /* 统计同成绩学生人数 成绩分数为0到100之间的一个整数 */ #include<stdio.h> int main() { int n; int x, target; int grade[101] = { 0 }; while (sca...原创 2018-03-27 17:34:12 · 218 阅读 · 0 评论 -
二叉树
主要是对二叉树的遍历,构造,还原 题目一: 二叉树的遍历 给定二叉树的前序遍历序列和中序遍历序列,求其后序遍历序列 struct Node{ Node *lchild; Node *rchild; char c; }Tree[50]; //静态内存分配数组 利用分配数组元素给相应的节点实现内存分配,这是对内存分配较为简单的实现方法 int loc; //静态...原创 2018-04-01 19:38:09 · 131 阅读 · 0 评论 -
哈弗曼树
给定N个节点和他们的权值,以他们为叶节点构造一条带权路径长度和最小的二叉树,该二叉树即为哈夫曼树 哈夫曼树的求法 将所有节点都放入集合K 若集合中的节点个数小于2,取出其中权值最小的两个,将父节点放入K 若集合K中只有一个节点,该节点即为构造出的哈夫曼树的根节点 所有构造得到的中间节点(即哈夫曼树上非叶子节点)的权值和即为该哈夫曼树的带权路径和 为了方便快捷的求得集合K中权值最小的两个元...原创 2018-04-01 19:06:45 · 228 阅读 · 0 评论 -
日期类问题
题目一 求两个日期之间的天数,如果两个日期是连续的我们规定他们之间的天数为两天 输入: 20110412 20110422 输出: 11 思路:将他们与特定的日期的天数差相减。预处理出所有日期与远点日期之间的天数差并保存起来。 日期类要特别注意—–闰年 代码: #define _CRT_SECURE_NO_DEPRECATE /* 日期差值 */ #include<...原创 2018-03-26 17:57:32 · 158 阅读 · 0 评论 -
搜索
一、暴力求解 特别注意时间复杂度(枚举情况个数) #define _CRT_SECURE_NO_DEPRECATE #include<stdio.h> int main() { int n; while (scanf("%d", &n) != EOF) { for (int i = 0; i <= 100; i++) ...原创 2018-04-07 11:18:44 · 141 阅读 · 0 评论