![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
每天写点代码
文章平均质量分 63
limchiang
这个作者很懒,什么都没留下…
展开
-
第一篇博文,希望是一个好习惯的开始
#includeusing namespace std;struct Node { int data; struct Node* next;};Node* ReverseList (Node* start) { Node* node=NULL;while(start->next!=NULL){ Node* next=start->next;原创 2012-09-26 21:45:52 · 2365 阅读 · 0 评论 -
N皇后问题 (回溯+打表)
http://acm.hdu.edu.cn/showproblem.php?pid=2553第一种方法,需打表,否则超时#pragma warning (disable:4786) #includeusing namespace std;int used_column[12]; //标记列是否被用过int used_Ldia[102],used_原创 2012-12-03 19:13:37 · 385 阅读 · 0 评论 -
Wooden Sticks
http://acm.hdu.edu.cn/showproblem.php?pid=1051一束待处理木棍,若后面的木棍的长 L 和宽 W 均不小于前一根木棍,则处理机器的不需要启动时间,否则需要1 min (第一根木棍需要1min),问最少需要处理时间?#pragma warning (disable:4786) #include#includeusing namespace s原创 2012-12-06 19:36:18 · 188 阅读 · 0 评论 -
逆序数对(nlogn)
http://poj.org/problem?id=2299分析一个特定的排序算法。这一算法通过交换相邻的两个数来处理一个由不同整数组成的数列,直到数组升序排好序为止。 Your task is to determine how many swap operations it needs to perform in order to sort a given input sequen原创 2012-12-08 21:38:56 · 324 阅读 · 0 评论 -
逆序数对 (常规)
http://acm.hdu.edu.cn/showproblem.php?pid=1394求下列数列中逆序数对最少的一个,并求出逆序数对数量?(n )a1, a2, ..., an-1, ana2, a3, ..., an, a1a3, a4, ..., an, a1, a2...an, a1, a2, ..., an-1 #pragma warning (d原创 2012-12-08 21:26:57 · 228 阅读 · 0 评论 -
判断单链表有无环,若有环,找出环的起始节点
#includeusing namespace std;struct Node { int data; struct Node* next;};void main(){//创建一个循环单链表Node* start=new Node();start->data=0;start->next=NULL;Node* a=start;Node* mark=NULL;for(in原创 2012-09-30 12:30:50 · 292 阅读 · 0 评论 -
找出数组中出现次数为奇数个的3个数
//一个数组,其中只有3个数出现的个数是奇数个,其他的数均出现偶数个,请找出这3个数#includeusing namespace std;//将数组划分成两部分,下标在pivot之前(包括pivot)的数averageint partion(int arr[],int b,int e){int length=e-b+1;int sum=0,ave;for(int i=b;i<=e原创 2012-09-28 20:40:38 · 602 阅读 · 0 评论 -
寻找第K大的数
int find_K_Largest( int begin, int end, int k ){ int s = begin + 1,t = end,first; first = arr[b]; while( s < t ){ while( arr[s] < first && s < t ) s ++; while( arr[t] >= first && s < t )原创 2012-12-18 21:24:01 · 242 阅读 · 0 评论 -
可处理负权边的两个最短路算法
1.Bellman-Ford 算法BellmanFord(G,s) for i = 0 to n-1 do dist[i]= ∞ Pred[i]= 0 dist[s]=0 for k = 1 to n-1 do foreach ∈ do if do foreach ∈ do if do原创 2012-10-06 14:30:34 · 503 阅读 · 0 评论 -
回溯法
http://acm.hdu.edu.cn/showproblem.php?pid=1045在最多为 4 * 4 的方阵中,圆形代表堡垒,正方形代表墙,堡垒射出的子弹无法穿过墙,求任何两个堡垒都不能射中对方的最大的堡垒放置数?#pragma warning (disable:4786) #include#include#includeusing namespace std原创 2012-12-02 17:08:26 · 213 阅读 · 0 评论 -
最近公共祖先(LCA) Tarjan算法
这里的动画演示可以更好地理解这一算法Tarjan算法是由Robert Tarjan在1979年发现的一种高效的离线算法,也就是说,它要首先读入所有的询问(求一次LCA叫做一次询问),然后并不一定按照原来的顺序处理这些询问,LCA Tarjan算法的用途是处理大量请LCA Tarjan基本框架:先用随便一种数据结构(链表就行),把关于某个点的所有询问标在节点上原创 2012-10-22 21:26:25 · 768 阅读 · 0 评论 -
将一个句子按单词反序
#include#include#includeusing namespace std;void reverse(string *s,int length){for(int i=0,j=length-1;istring temp=s[i];s[i]=s[j];s[j]=temp;}}void main(){string s[1000];//将按原创 2012-10-01 14:40:23 · 255 阅读 · 0 评论 -
二叉树的非递归后序遍历
//二叉树的非递归后序遍历#include#includeusing namespace std;//二叉树节点struct Node{ int data; Node* lch; Node* rch;};//栈中的元素struct stackNode{ Node* node; //标记node的右节点是否已遍历,是(mark=1),否(mark=0) int原创 2012-10-02 16:08:00 · 330 阅读 · 0 评论 -
数组中是否有两个数的和为10
#include#includeusing namespace std;void main(){int arr[40];//和为0的数对个数int count=0;//生成数组for(int i=0;iint r=rand()%21;arr[i]=r;}//排序数组sort(arr,arr+i);int p1=0,p2=i-1;while原创 2012-10-01 22:25:32 · 634 阅读 · 0 评论 -
二叉树的非递归中序遍历
//二叉树的非递归中序遍历#include#includeusing namespace std;//二叉树节点struct Node{ int data; Node* lch; Node* rch;};//栈stack s;//非递归中序遍历void inorder(Node *root){ if(root==NULL) return; Node* node=roo原创 2012-10-02 14:04:44 · 420 阅读 · 0 评论 -
找出二叉树的深度
//二叉树节点的表示struct Node{int data;Node* leftChild;Node* rightChild;};//返回二叉树的深度int treeDepth(Node* root){if(root==NULL)return 0;else if(root->leftChild==NULL&&root->rightChild==NULL)原创 2012-09-30 18:05:31 · 189 阅读 · 0 评论 -
二叉树的非递归前序遍历
#include#includeusing namespace std;struct Node{ int data; Node* lch; Node* rch;};stack s;void preOrder(Node *root){ if(root==NULL) return; Node* node=root; while(node!=NULL){ coutdat原创 2012-10-02 11:56:06 · 297 阅读 · 0 评论 -
可处理负权边的两个最短路算法
1.SPFA算法:其中,node这个结构体为:struct node{int v; //相邻节点int dis; //与此相邻节点的距离};注:稀疏图SPFA基本无敌。但是无负权稠密图的SSSP问题,heap+dijkstra要比SPFA快相当多。2.Bellman-Ford 算法void bellmenford(){ int i,j,flag=0原创 2012-10-06 14:25:18 · 81 阅读 · 0 评论 -
卡特兰数(Catalan Number)专题
1.Catalan数介绍令h(0)=1,h(1)=1,catalan数满足递推式: h(n)= h(0)*h(n-1)+h(1)*h(n-2) + ... + h(n-1)h(0) (n>=2)另类递推式: h(n)=h(n-1)*(4*n-2)/(n+1);递推关系的解为: h(n)=C(2n,n)/(n+1) (n=1,2,3,...)递推关系的另类解为:原创 2012-10-07 22:35:09 · 1168 阅读 · 0 评论 -
第二篇博文,坚持!
1~9这9个数每个数出现两次,一共18个数,将这18个数分成3组,组成3个6位数,求这样的组合个数:每个六位数都是完全平方数。要求时间1s以内#include#include#include#include#include#includeusing namespace std;//若有相等元素,返回第一个int binarySearch1(int b,int e,str原创 2012-09-27 21:50:28 · 2172 阅读 · 0 评论