- 博客(17)
- 收藏
- 关注
原创 正数取反、原码、反码、int最大与最小值的测试小代码
正数:原码 = 反码 = 补码负数:反码 = 原码取反, 补码 = 反码+10 = 0000 0000而‘-0’ = 1000 0000 是负数的最小值8位的话为-128 这个数没有原码和反码 #include <iostream>#include <bitset>using namespace std;int main() { int c = 0; //求-1 f
2016-10-07 19:31:49
1518
原创 算法导论钢条切割问题
钢条切割思路:1、先考虑,钢条总长度为0时,总价值为0;2、考虑,钢条总长度为1时,此时无法切割,总价值为1;3、钢条长为2时,两种情况:不切割,中间切割一次,比较谁大,取大的方案(要用到上面的结果2);...总结:长度为i的钢条,最左端切割的位置为k,那么总价值如下递推式:dp[i]=max∑k=1i(dp[i−k]+price[k])(i>0) dp[i] =max{\sum_{
2016-08-31 19:17:06
646
原创 并查集
功能1、实现两个集合的合并2、查询一个元素属于哪个集合实现一共两个函数:1、查找当前元素a,属于哪个集合 :int getPar(int a)注意实现时需要做路径压缩,下图就是路径压缩的原理:函数实现:int getPar(int a){ if(par[a] == a)
2016-08-23 21:48:39
296
原创 memset的使用以及原码反码补码.md
原码反码补码的设计是为了计算机算加法与减法(为简化,此处使用的是8位)正数的原码=反码=补码 负数情况较为复杂:负数的补码是在其原码的基础上, 符号位不变, 其余各位取反, 最后+1. (即在反码的基础上+1) [-1] = [10000001]原 = [11111110]反 = [11111111]补 计算机必然不会去区分符号位,因此符号位是要参与计算的,如果使用原码计算: 1 - 1 =
2016-08-19 21:14:24
525
原创 快速求幂与快速幂模
未优化过的#include <iostream>using namespace std;void km(){//快速幂 int a,n; cin >> a >> n; int pow = 1; while (n){ if (n%2){ pow *= a; } a *= a; n
2016-07-22 20:25:13
2032
原创 最小生成树
prim算法对这种有记忆性质的变量(在外面定义,循环时会记录上次的值,类似于全局变量),每次使用都要小心,注意初始化问题!!!#include <iostream>using namespace std;const int N = 6;/*int e[N][N]={ {0,6,1,5,9999,9999}, {6,0,5,9999,3,9999},
2016-07-08 20:56:13
230
原创 最小生成树
prim算法对这种有记忆性质的变量(在外面定义,循环时会记录上次的值,类似于全局变量),每次使用都要小心,注意初始化问题!!!#include <iostream>using namespace std;const int N = 6;/*int e[N][N]={ {0,6,1,5,9999,9999}, {6,0,5,9999,3,9999},
2016-07-06 01:49:05
224
原创 最长回文子串
#include <iostream>#include <string>using namespace std;char arr1[1001000];char arr2[1001000];char manacher[2002000];//int m[1001000][1000100]={0};int p[2000010] = {0};//p[j]串长度string arr;int
2016-07-01 21:23:50
227
原创 最大子段和
简单实现,注意递推关系的选取!#include <iostream>#include <cmath>#include <algorithm>using namespace std;int a[6] = {-2,11,-4,13,-5,-2};int ans = 0;int sum = 0;int trace = 0;int main() { if(a[0] > 0) ans =
2016-06-23 22:28:57
217
原创 01背包
普通实现方式#include <iostream>using namespace std;const int n = 5;const int c = 10;int w[] = {0,2,2,6,5,4};int v[] = {0,6,3,5,4,6};int m[n+2][c+2];//m[i][j]为考虑到第i至n个物品时,当容量为j,此时背包价值为m[i][j]int x[n+1]
2016-06-23 21:16:00
197
原创 最长公共子序列(未完成)
做了滚动数组的lcs,每次都只会用到本行和上一行的数据,因此只需记录了两行就能够算出结果。 使用滚动数组是不是无法追踪解的情况? 关于i-1这种问题的越界处理,有两种处理方法:一种是输入的数组前面加个无意义字符,让有意义的数据从1开始;另一种是 解空间从1开始计算,如本例中C[i][j]的的下标。#include <iostream>using namespace std;char
2016-06-23 21:14:11
222
原创 分支界限法实现单源最短路径
#include <iostream>#include <queue>#include <vector>#include <algorithm>#include <ctime>using namespace std;//黑科技最小堆实现方法/*priority_queue <int> q;int main() { //priority_queue comp() <int>
2016-05-11 17:19:54
2107
原创 回溯法实现批处理作业调度
include include include using namespace std;int work[4][2]={{0,0},{2,1},{3,1},{2,3}};//可以分段赋值也可以,逐个赋值用,隔开 int n = 3; int best = 1<<20; int x[4] = {0,1,2,3};//排列树的初始化 int f[4] = {0}; int bestf[4]={
2016-05-04 11:18:26
1494
原创 Python
安装注册码问题 注册方法: 在 注册时选择 License server ,填 http://idea.lanyus.com ,然后点击 OK 使用参考如下教程 http://wenku.baidu.com/link?url=tFRBIYusXT6FTpETPRys49vohtGV5StEljzN7R4CvGss2zVxtz9nOPI9EiPCwfGPMMbP8-U6V6pvKoi
2016-02-22 16:31:21
244
原创 快速求幂
这里的说法比较容易理解 http://blog.youkuaiyun.com/hkdgjqr/article/details/5381028 这个说法不太容易理解,但是给出了这个算法的书本上的来源以及数学原理 http://blog.jobbole.com/74468/我自己的实现过程//// main.cpp// 快速求幂//// Created by 万昆 on 15/
2015-12-06 23:40:41
279
转载 UVA11988
欢迎使用Markdown编辑器写博客本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦:Markdown和扩展Markdown简洁的语法代码块高亮图片链接和图片上传LaTex数学公式UML序列图和流程图离线写博客导入导出Markdown文件丰富的快捷键快捷键加粗 Ctrl + B 斜体 Ctrl + I 引用 Ctrl
2015-12-03 20:54:00
402
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人