c++
徐赤赤
这个作者很懒,什么都没留下…
展开
-
八皇后问题(递归+回溯)
问题描述:在一个8*8的棋盘上放置8个皇后,不允许任何两个皇后在棋盘的同一行、同一列和同一对角线上。 不重复的方案是12个,其中一个是对称图形,最终结果是11*8+1*4=92。 方法: 经观察发现,对8 x 8的二维数组上的某点a[i][j](0 其主对角线(即左上至右下)上的每个点的i-j+7的值(范围在(0,14))均相等; 其从对角线(即右上至左下)上的每个点的i转载 2016-02-14 16:48:37 · 341 阅读 · 0 评论 -
找出一个无环单链表里面的倒数第K个元素,时间复杂度为O(n)
/*找出一个无环单链表里面的倒数第K个元素,时间复杂度为O(n) 解决办法:用两个同步指针,第一个先走k-1步,第二个才开始走, 然后他们开始同步走,当第一个指针走到末尾的时候,第二个指针 就指向了倒数第K个元素。 */ #include #include typedef struct Node{ int data; struct Node*next;原创 2016-03-12 13:53:45 · 1167 阅读 · 0 评论 -
动态规划:求最长上升子序列
//动态规划问题: /*求解最长上升子序列问题: 比如对于序列4,1,2,2,4,它的最长上升子序列为1,2,4,长度为3. 对于序列4,2,4,2,5,6,它的最长上升子序列为2,4,5,6,长度为4. 设a[i]表示原始序列,设DP[i]表示以第i个数结尾的最长上升子序列长度,那么 很显然想到处DP[i]的值,需要在DP[k](1 假设第kk项是我们找到的答案,那么第i个数就可以接原创 2016-03-14 17:51:57 · 280 阅读 · 0 评论 -
leetcode 198:动态规划求小偷偷东西问题:
/*动态规划解小偷偷东西问题:给出一组数列,求能偷走的最大值,不能偷连续 的数,否则会除法报警{1,2,3,4,5},偷1+3+5=9. */ int rob(vector& nums) { int n = nums.size(); if(n==0) return 0; else if(n==1) return nums[0]原创 2016-03-14 20:12:54 · 3904 阅读 · 0 评论 -
动态规划:最大子段和
//动态规划:最大子段和(腾讯2面) int findmaxSum(vector&vs){ vector res(vs.size(),INT_MIN); res[0] = vs[0]; for(int i=1;i<vs.size();i++){ res[i] = max(res[i-1]+vs[i],vs[i]); } int max =INT原创 2016-04-13 15:01:30 · 848 阅读 · 0 评论 -
螺旋矩阵和蛇形矩阵
#include using namespace std; int main() { int n; cout<<"请输入2维矩阵的行数n:"; cin>>n; int a[n][n]={0}; int x=0,y=0; int num=1;//从1开始的矩阵 int c=0;//记录螺旋数 while(num<=n*n){原创 2016-04-07 11:02:20 · 494 阅读 · 0 评论 -
自定义字符串切割Split函数
/** 自定义字符串切分split函数 */ vector split(const string & str,const string & split){ vectorres; int begin=0; int len = str.length(); int len_spl = split.length(); if(len_spl==0) r原创 2016-04-21 09:48:12 · 644 阅读 · 0 评论 -
探索hash_set
原文链接:http://blog.csdn.net/morewindows/article/details/7330323 Title: STL系列之九 探索hash_set Author: MoreWindows Blog: http://blog.csdn.net/MoreWindows E-mail: morewindow转载 2016-08-15 15:51:08 · 263 阅读 · 0 评论 -
海量数据处理问题
原文链接:http://blog.csdn.net/v_JULY_v/article/details/6279498 海量数据处理:十道面试题与十个海量数据处理方法总结 作者:July、youwang、yanxionglu。 时间:二零一一年三月二十六日 本文之总结:教你如何迅速秒杀掉:99%的海量数据处理面试题。有任何问题,欢迎随时交流、指正。 出处:http:转载 2016-08-15 15:53:05 · 244 阅读 · 0 评论 -
C++ 优先队列的使用
首先看下优先队列的STL源码: class priority_queue { protected: _Sequence c; ///容器 _Compare comp; ///比较准则 public: bool empty() const { return c.emp原创 2016-08-27 22:03:17 · 484 阅读 · 0 评论 -
经典内部排序: 堆排序,快排,归并排序
堆排序: #include using namespace std; void minHeapFixDown(int a[],int i,int n){ int tmp = a[i]; int j = i*2+1; while(j<n){ if(j+1<n&&a[j+1]<a[j]) j++; if(a[i]<原创 2016-08-18 11:33:12 · 412 阅读 · 0 评论 -
swagger
总结: 学习Swagger的使用方法,安装并使用了Swagger-ui、Swagger-editor,学习了生成、描述、调用和可视化RESTful风格的Web服务并实现了一些基本功能。 总结: 1.学习什么是RESTFUL风格的API以及RESTFULAPI的原则 2.学习了GIT的使用和配置 3.了解了MAVEN的使用 4.了解了RestEasy,学习了一个开源的Se原创 2016-07-11 22:11:47 · 524 阅读 · 0 评论 -
KMP算法
原文链接:http://www.cnblogs.com/c-cloud/p/3224788.html 前言 之前对kmp算法虽然了解它的原理,即求出P0···Pi的最大相同前后缀长度k;但是问题在于如何求出这个最大前后缀长度呢?我觉得网上很多帖子都说的不是很清楚,总感觉没有把那层纸戳破,后来翻看算法导论,32章 字符串匹配虽然讲到了对前后缀计算的正确性,但是大量的推理证明不转载 2016-08-11 22:18:48 · 260 阅读 · 0 评论 -
动态规划 0-1背包问题
问题描述: 给定N中物品和一个背包。物品i的重量是Wi,其价值位Vi ,背包的容量为C。问应该如何选择装入背包的物品,使得转入背包的物品的总价值为最大?? 在选择物品的时候,对每种物品i只有两种选择,即装入背包或不装入背包。不能讲物品i装入多次,也不能只装入物品的一部分。因此,该问题被称为0-1背包问题。 问题分析:令V(i,j)表示在前i(1 (1) V(i,0)=V(0,j原创 2016-08-13 18:03:34 · 2077 阅读 · 0 评论 -
动态规划:正整数分组
将一堆正整数分为2组,要求2组的和相差最小。 例如:1 2 3 4 5,将1 2 4分为1组,3 5分为1组,两组和相差1,是所有方案中相差最少的。 动态规划解决: 递推公式: f(i,j)={f(i−1,j)(jai)max(f(i−1,j),f(i,j−ai)+ai)(ai=j=[sum/2]) #include #include usin原创 2016-08-14 21:50:41 · 2001 阅读 · 0 评论 -
C++ 面试题
本试题仅用于考查C++/C程序员的基本编程技能。内容限于C++/C常用语法,不涉及数据结构、算法以及深奥的语法。考试成绩能反映出考生的编程质量以及对C++/C的理解程度,但不能反映考生的智力和软件开发能力。 笔试时间90分钟。请考生认真答题,切勿轻视。 一、请填写BOOL , float, 指针变量 与“零值”比较的 if 语句。(10分) 提示:这里“零值”可以是0, 0.转载 2016-03-12 12:09:21 · 268 阅读 · 0 评论 -
各种内部排序算法
#include using namespace std; //各种内部排序算法 //一:插入排序,时间复杂度为O(n*n) //交还函数 void Swap(int arr[],int i,int j){ int tmp = arr[i]; arr[i] = arr[j]; arr[j] = tmp; } void insertSort(in原创 2016-03-12 11:39:53 · 280 阅读 · 1 评论 -
最大匹配问题 POJ 1274
#include /*POJ 1274 奶牛和牛棚问题,N头奶牛和M个牛棚,每个牛棚只能有一头奶牛产奶 输入每头奶牛愿意产奶的牛棚数和对应的牛棚编号 输出最多分配到的牛棚数*/ using namespace std; const int maxnum = 220; int m,n,Map[maxnum][maxnum]; int link[maxnum]; bool visi原创 2016-03-10 23:17:27 · 273 阅读 · 0 评论 -
(C++)链表实现Farey序列
#include #include using namespace std; typedef struct Node { int a,b; struct Node *next; } Node,*linklist; void innilist(linklist &L) { L=new Node; L->next=NULL; } void转载 2016-02-02 11:22:55 · 305 阅读 · 0 评论 -
合并两个有序单链表
#include using namespace std; typedef struct Node{ int num; struct Node * next; }Node,*linklist; void creatList(linklist & L){ L = new Node; L->next = NULL; }原创 2016-02-02 12:23:28 · 347 阅读 · 0 评论 -
(C++) 分隔符匹配
匹配(),{},[],如果遇到/*,要跳过/*....*/之间的所有字符,如果没有*/,不匹配。 #include #include using namespace std; template class Stack{ private: int maxSize; int top; T * st; public: S原创 2016-02-02 20:26:31 · 1580 阅读 · 0 评论 -
string 数组实现大数相加
#include #include using namespace std; void addingLargeNumber(string s1,string s2){ int i,j,k,len; i = s1.length(); j = s2.length(); len = k = (i>j)?(i+1):(j+1); int原创 2016-02-03 11:30:11 · 561 阅读 · 0 评论 -
C++ 使用栈判断回文字符串
#include #include #include using namespace std; int main() { stack st1; stack st2; stack st3; string str; cout getline(cin,str); int len = str.lengt原创 2016-02-03 14:37:59 · 2128 阅读 · 0 评论 -
10进制数转成任意进制数
十进制转成任意进制(2~16)进制 #include #include #include using namespace std; void reserve(string & str){ int len = str.length(); for(int i =0;i char ch = str[i]; str[i] =转载 2016-02-03 19:30:11 · 417 阅读 · 0 评论 -
图的遍历
#include #include #include #include #include const int Max = 26; using namespace std; class Graph{ private: struct VertexNode{//节点信息 bool isVisited; string转载 2016-03-04 20:58:42 · 206 阅读 · 0 评论 -
二叉树知识点
高度为h的平衡二叉树 最少包含的节点个数为: f(1) = 1,f(2)=2,f(3)=4,f(4)=7............f(n+2) = f(n+1)+f(n)+1. 最少包含的叶节点个数为: f(1)=1,f(2)=1,f(3)=2,f(4)=3,f(5)=5,f(6)=8.......f(n+2)=f(n+1)+f(n).原创 2016-02-18 17:43:42 · 280 阅读 · 0 评论 -
二叉树操作(插入、删除、遍历(递归与非递归))
//genBST.h #ifndef GENBST_H_INCLUDED #define GENBST_H_INCLUDED #include #include using namespace std; template class Stack:public stack{}; template class Queue:public queu原创 2016-02-16 13:23:10 · 490 阅读 · 0 评论 -
动态规划:求最长公共子序列
动态规划: 什么是动态规划算法 动态规划一般也只能应用于有最优子结构的问题。最优子结构的意思是局部最优解能决定全局最优解(对有些问题这个要求并不能完全满足,故有时需要引入一定的近似)。简单地说,问题能够分解成子问题来解决。 动态规划算法分以下4个步骤: 描述最优解的结构递归定义最优解的值按自底向上的方式计算最优解的值 //此3步构成动态规划解的基础。由计算出的结果构转载 2016-03-18 16:12:48 · 581 阅读 · 0 评论 -
Dijkstra 求最短路径算法
#include using namespace std; const int maxint = 99999; const int maxnum = 100; void Dijkstra(int n,int v,int * dist,int * prev,int c[maxnum][maxnum]){ bool s[maxnum]; for(int i =1; i原创 2016-03-09 15:53:35 · 258 阅读 · 0 评论 -
Floyed 算法求最短路径
#include #include const int maxint = 99999; const int maxnum = 100; using namespace std; struct Graph{ int adjArr[maxnum][maxnum]; int nodeNum; int edgeNum; }; void rea原创 2016-03-09 18:39:57 · 332 阅读 · 0 评论 -
判断有向图中是否有环
#include /*判断一个有向图中是否有环,使用DFS的改进算法来判断 设置标志位C,如果C=0,此节点没被访问过 如果C=-1,此节点被访问过且正在遍历其子节点,有环 如果C=1,此节点被访问过且其字节点也都被访问过,没环 */ const int maxnum =100; using namespace std; int pre[m原创 2016-03-09 20:18:54 · 1019 阅读 · 0 评论 -
Kurskal算最小生成树
#include #include /*含有V个顶点的最小生成树:找到v-1条边,构成 一个最小生成树,按照边的权值一次找最小的边出来, 如果没有构成环,则放到树中,如果构成环,则继续找下一条边*/ const int maxnum =100; const int maxint = 99999; int visited[maxnum][maxnum];//用来表示边是否被访问过原创 2016-03-09 21:00:29 · 306 阅读 · 0 评论 -
图的最大匹配问题: poj_1469
#include //二分图的最大匹配问题,POJ149 //匈牙利算法 /*最大流算法的核心问题就是找增广路径(augment path)。匈牙利算法也不例外,它的基本模式就是: 初始时最大匹配为空 while 找得到增广路径 do 把增广路径加入到最大匹配中去 最小点覆盖数: 最小覆盖要求用最少的点(X集合或Y原创 2016-03-10 21:05:40 · 267 阅读 · 0 评论 -
大数相乘
#include #include using namespace std; #define N 100 void char_to_int(int *a , char* ch){ int len = strlen(ch); int i = 0, term = 0; for(i = 0 ; i < N ; i++){ a[i] = 0; }原创 2016-09-07 22:24:45 · 251 阅读 · 0 评论