
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 · 370 阅读 · 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 · 1203 阅读 · 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 · 300 阅读 · 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 · 4000 阅读 · 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 · 886 阅读 · 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 · 531 阅读 · 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 · 701 阅读 · 0 评论 -
探索hash_set
原文链接:http://blog.youkuaiyun.com/morewindows/article/details/7330323Title: STL系列之九 探索hash_setAuthor: MoreWindowsBlog: http://blog.youkuaiyun.com/MoreWindowsE-mail: morewindow转载 2016-08-15 15:51:08 · 279 阅读 · 0 评论 -
海量数据处理问题
原文链接:http://blog.youkuaiyun.com/v_JULY_v/article/details/6279498海量数据处理:十道面试题与十个海量数据处理方法总结作者:July、youwang、yanxionglu。时间:二零一一年三月二十六日本文之总结:教你如何迅速秒杀掉:99%的海量数据处理面试题。有任何问题,欢迎随时交流、指正。出处:http:转载 2016-08-15 15:53:05 · 269 阅读 · 0 评论 -
C++ 优先队列的使用
首先看下优先队列的STL源码:class priority_queue{ protected: _Sequence c; ///容器 _Compare comp; ///比较准则 public: bool empty() const { return c.emp原创 2016-08-27 22:03:17 · 511 阅读 · 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 · 438 阅读 · 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 · 603 阅读 · 0 评论 -
KMP算法
原文链接:http://www.cnblogs.com/c-cloud/p/3224788.html前言 之前对kmp算法虽然了解它的原理,即求出P0···Pi的最大相同前后缀长度k;但是问题在于如何求出这个最大前后缀长度呢?我觉得网上很多帖子都说的不是很清楚,总感觉没有把那层纸戳破,后来翻看算法导论,32章 字符串匹配虽然讲到了对前后缀计算的正确性,但是大量的推理证明不转载 2016-08-11 22:18:48 · 282 阅读 · 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 · 2124 阅读 · 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 · 2073 阅读 · 0 评论 -
C++ 面试题
本试题仅用于考查C++/C程序员的基本编程技能。内容限于C++/C常用语法,不涉及数据结构、算法以及深奥的语法。考试成绩能反映出考生的编程质量以及对C++/C的理解程度,但不能反映考生的智力和软件开发能力。笔试时间90分钟。请考生认真答题,切勿轻视。一、请填写BOOL , float, 指针变量 与“零值”比较的 if 语句。(10分)提示:这里“零值”可以是0, 0.转载 2016-03-12 12:09:21 · 305 阅读 · 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 · 307 阅读 · 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 · 307 阅读 · 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 · 347 阅读 · 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 · 373 阅读 · 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 · 1618 阅读 · 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 · 605 阅读 · 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 · 2196 阅读 · 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 · 452 阅读 · 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 · 224 阅读 · 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 · 306 阅读 · 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 · 528 阅读 · 0 评论 -
动态规划:求最长公共子序列
动态规划:什么是动态规划算法动态规划一般也只能应用于有最优子结构的问题。最优子结构的意思是局部最优解能决定全局最优解(对有些问题这个要求并不能完全满足,故有时需要引入一定的近似)。简单地说,问题能够分解成子问题来解决。动态规划算法分以下4个步骤:描述最优解的结构递归定义最优解的值按自底向上的方式计算最优解的值 //此3步构成动态规划解的基础。由计算出的结果构转载 2016-03-18 16:12:48 · 619 阅读 · 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 · 291 阅读 · 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 · 369 阅读 · 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 · 1090 阅读 · 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 · 345 阅读 · 0 评论 -
图的最大匹配问题: poj_1469
#include //二分图的最大匹配问题,POJ149//匈牙利算法/*最大流算法的核心问题就是找增广路径(augment path)。匈牙利算法也不例外,它的基本模式就是: 初始时最大匹配为空 while 找得到增广路径 do 把增广路径加入到最大匹配中去 最小点覆盖数: 最小覆盖要求用最少的点(X集合或Y原创 2016-03-10 21:05:40 · 297 阅读 · 0 评论 -
大数相乘
#include #include using namespace std;#define N 100void 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 · 274 阅读 · 0 评论