- 博客(15)
- 收藏
- 关注
原创 INT_MIN的表示法
我们可以在文件中看到#define INT_MIN ( -INT_MAX - 1)这是因为,对于INT_MAX 2147483647INT_MIN = -2147483648对于-2147483648,C/C++中这是一个常量表达式,由一元负运算符“-” 和一个常量”2147483648“组成,而2147483648超出了int的最大表示范围而常量类型的匹配规则按照int ,u
2015-03-25 15:54:39
831
原创 关于交换两个值的一些讨论
void swap_1(int& a, int& b){int temp = a;a = b;b = temp;}以上是交换两个int值的直觉方法另外,其实还有void swap_2(int& a, int& b){a = a + b;b = a - b;a = a - b;}以上情况不需要考虑int值相加溢出的问题,溢出了还可以减回来另外还有一种
2015-03-25 11:06:11
383
原创 string实现big int类
头文件BigNumber.h#ifndef BIGNUMBER_H#define BIGNUMBER_H#include#includeusing namespace std;class BigNumber{private: string Num; string Code;public: BigNumber(){} BigNumber(int num); BigNum
2012-12-21 22:11:23
423
原创 算法 小兔齐齐跑无向图(待解决)
给定一个无向图,小兔齐齐一开始位于某个节点上(我们不知道他具体在哪个节点上)。我们知道每一秒小兔都必定会向他所在的节点的某一个邻居节点出发(如果存在邻居节点;假设小兔的移动速度很快,移动时间可以忽略)。在每一秒你可以做不超过2次的询问,每次可以询问某个节点是否有小兔!现在假设小兔不想被我们找到,同时小兔非常聪明,那么我们需要至少几秒才能必定找到小兔的位置?Input:输入数据第一行包含一
2012-12-21 22:07:57
480
原创 算法 shadow听音乐
shadow喜欢听音乐,于是v11自己写了个播放器送给了shadow,这个播放器有一个播放列表,一个“下一首”按钮,一个“上一首”按钮,还有一个播放记录。一开始播放器会播放播放列表中的第一首歌,当按下“下一首”按钮时,它会播放当前歌曲在播放列表中的下一首歌,若当前歌曲就是播放列表中的最后一首歌时,它仍会播放播放列表中的最后一首歌;当按下“上一首”按钮时,它会清除播放记录中的最后一首歌,并播放清
2012-12-21 22:06:13
384
原创 算法 Jack的完美点餐方案
Problem Description Jack最近喜欢到学校餐厅吃饭,好吃干净还便宜。 在学校餐厅,有a种汤,b种饭,c种面条,d种荤菜,e种素菜。 为了保证膳食搭配,Jack每顿饭都会点1~2样荤菜,1~2样素菜(不重复)。同时,在Jack心情好的时候,会点一样饭,再配上一种汤。在心情不好的时候,就只吃一种面条。 因为经济有限,Jack每次点餐的总价在min~max之间。Jack想知道,总共
2012-12-21 22:03:55
765
原创 排序算法之归并排序
时间复杂度O(nlog n); 需要 O(n) 额外空间,稳定的排序#include#includeusing namespace std;//谓词函数template bool Elemasc(const T &left,const T &right){ return left<right;}template bool Elemdesc(const T &left,co
2012-12-21 21:59:20
196
原创 随机化顺序统计选择程序
可以在O(n)的期望时间内找到输入数据中第i大的数,不依赖于输入数据,最坏运行时间O(n^2)#includeusing namespace std;templateint RandomizedPartition(T A[],int p, int r){ int i = rand()%(r-p+1)+p; swap(A[i],A[r]); T x = A[r]; i = p
2012-12-21 21:57:35
313
原创 排序算法之堆排序
堆排序,原地排序算法,时间复杂度O(nlog n),不稳定的排序算法数组实现inline int Parent(int i){ return (i-1)/2;//以数组下标为0开始计算,如以1开始计算则为i/2}inline int Left(int i){ return (2*i+1);//以数组下标为0开始计算,如以1开始计算则为2*i}inline int R
2012-12-21 21:50:09
199
原创 排序算法之快速排序
快排,O(nlog n) 期望时间,O(n^2) 最坏情况; 对于大的、乱数列表一般相信是最快的已知排序不稳定的排序,需要输入无关时要用到随机化过程templateint Partition(T A[],int p, int r){ T x = A[r]; int i = p-1; for(int j=p;j<=r-1;j++) { if(A[j]<= x) {
2012-12-21 21:47:25
211
原创 排序算法之基数排序
基数排序,利用计数排序思想,对数据分别按位数进行计数排序,时间复杂度O(n·k); 需要 O(n) 额外空间,是稳定的排序#includeusing namespace std;void RadixCountSort(int A[], int k, int len)//分别为需排序的数组,排序的基数,数组的长度{ int *C = new int[k]();//计数排序所需临时空间
2012-12-21 21:43:40
263
原创 排序算法之计数排序
计数排序,适用于明确输入数据的范围的情况时间复杂度为O(n),稳定,需要 O(n+k) 额外空间#includeusing namespace std;void CountingSort(int A[], int B[], int k, int len){ int *C = new int[k+1]; int i; for(i=0;i<=k;i++) C[i]=0;
2012-12-21 21:40:58
191
原创 汉诺塔程序
简单嵌套应用#include#includeusing namespace std;void move(int n,char a,char b,char c){ if (n==1) cout "<< c << endl; else { move(n-1,a,c,b); cout "<< c << endl; move(n-1,b,a,c); }}int
2012-12-21 21:12:18
211
原创 栈简单实现
初始为10,动态扩张,动态收缩没写(内容少于1/4时收缩)#ifndef M_STACK_H#define M_STACK_H#includetemplateclass m_Stack{private: int Capacity; T *m_StackBase; size_t Length; void IfOverflow();public: m_Stack():C
2012-12-21 21:06:57
265
原创 Sudoku
搜索法解数独程序,dfs#include #include #include #include using namespace std;#define N 9#define M 3int Sudoku[N][N] = {0};int cnt = 0;//记录解的个数bool x[N][N] = {0};//x[i][j]代表第i行是否存在数jbool y[N][N] =
2012-12-21 01:37:10
327
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅