算法专区
文章平均质量分 71
hi_software
这个作者很懒,什么都没留下…
展开
-
算法之道_流水线装配问题_动态规划
#include int Record[2][10]; int countA=0; int countB=0; typedef struct data { int da; int min; int Tonext; }Data; int min(int x ,int y,int i) { if(x>y) { if(i==1) { Record[0][coun原创 2012-11-06 21:30:00 · 1024 阅读 · 0 评论 -
算法之道_最长公共子序列_序列可间隔但顺序固定
#include #include int Max(int x, int y) { return x>y?x:y; } int find(const char *A,const char*B) { int i = 0; int j = 0; int Record[20][20] = {0}; int LenA = strlen(A); int LenB = s转载 2012-11-07 09:53:56 · 586 阅读 · 0 评论 -
整数表示为最大子序列与整数表示为连续子序列
#include void find(int number) { int i = 0; int sum = 0; for ( i = 1; i { sum += i; if (number - sum break; } if(sum != 0 ) sum -= i; for(int j = 1; j { prin原创 2012-12-09 20:59:29 · 580 阅读 · 0 评论 -
du熊填数字
好文章忍不住转载来的,望原作者见谅 http://www.cnblogs.com/luotinghao/archive/2012/12/12/2815233.html http://blog.csdn.net/heaven13483/article/details/8284572 研究了以上两篇文章与代码,加以综合,从完全不懂到基本清楚,希望同样不懂的人能有所收获方便大家,也方便自己,谢谢原转载 2012-12-12 20:51:36 · 753 阅读 · 0 评论 -
巧妙的斐波那契
巧妙的斐波那契 在算法中发现了数学的乐趣。 先提出一个问题,如果一个长的为n的数组,用0和1填充,不能有连续的1,那么有多少种填充方法。 解法:长度为n,只有当1的个数小于等于n/2+n%2时,此时才可能满足题意。(例如n=7,那么之多可以有4个1,因为3个0的周围只有4个 空。)则有解为C44 +c5 3 +c6 2 + C71+c80 = 1 + 10 +转载 2012-12-12 20:42:15 · 585 阅读 · 0 评论 -
三色旗问题
说明 三色旗的问题最早由E.W.Dijkstra所提出,他所使用的用语为Dutch Nation Flag(Dijkstra为荷兰 人),而多数的作者则使用Three-Color Flag来称之。 假设有一条绳子,上面有红、白、蓝三种颜色的旗子,起初绳子上的旗子颜色并没有顺序,您 希望将之分类,并排列为蓝、白、红的顺序,要如何移动次数才会最少,注意您只能在绳子上 进行这个动作,而且一次只转载 2013-01-09 19:27:31 · 877 阅读 · 0 评论 -
排序算法
#include #include #define SIZE 10 void printArray(int A[SIZE]); void PopSort( int A[SIZE]); void InsertSort( int A[SIZE] ); void ChooseSort( int A[SIZE] ); void ShellSort( int A[SIZE] ); voi原创 2012-09-12 22:11:57 · 433 阅读 · 0 评论 -
马的遍历(多方案)
//此解法的重点在于,通过一个变量取余使得具有相同路数的可能走另一条路,优先级变化。 #include #define INF 100 int board[8][8]; int start; int mover[] = {-2, -1, 1, 2, 2, 1, -1, -2}; int movec[] = { 1, 2, 2, 1,-1,-2, -2, -1}; int n转载 2013-03-24 20:22:12 · 690 阅读 · 0 评论 -
矩阵相乘
#include using namespace std; void main() { int A[3][4] ={ 1 ,1,1,1, 1,2,1,1, 1,1,1,1 }; int B[4][2] ={1,1, 1,3, 4,2, 1,1 }; int i =0; int j = 0; int原创 2012-11-05 14:14:15 · 363 阅读 · 0 评论 -
找最大子序列
题:一组数字中有正有负,找出和最大的子序列。eg:1,2,-4,2,3,4,-2,1的最大子序列为2,3,4. #include using namespace std; typedef struct node { int data; int x; int y; }Node; void main() { Node Last; Node Current;转载 2012-11-05 11:18:11 · 466 阅读 · 0 评论 -
扑克牌顺子
扑克牌顺子的问题:五张牌,A2345是顺子,A2KQJ也是顺子,王可以当作任意牌. 解题思路:排序后最大数字减去最小数字如果小于5则为顺子,如果大于5,则将较小的数字加上13,排序重新用此方法 #include #include #include using namespace std; int main() { vector MyData; vector ::iterat转载 2012-11-04 22:16:36 · 1612 阅读 · 0 评论 -
全排列算法原理和实现
转载自:http://www.cnblogs.com/nokiaguy/archive/2008/05/11/1191914.html 全排列是将一组数按一定顺序进行排列,如果这组数有n个,那么全排列数为n!个。现以{1, 2, 3, 4, 5}为 例说明如何编写全排列的递归算法。 1、首先看最后两个数4, 5。 它们的全排列为4 5和5 4, 即以4开头的5的全排列和以5开头的4的全排转载 2012-09-10 12:15:24 · 662 阅读 · 0 评论 -
二叉树中的最近公共祖先问题
二叉树中的最近公共祖先问题 2011-02-11 题目:要求寻找二叉树中两个节点的最近的公共祖先,并将其返回。 view source print? 1 class Node 2 { 3 Node * left; 4 Node *转载 2012-05-23 18:05:30 · 731 阅读 · 0 评论 -
整数划分问题(苹果盘子问题)
整数划分问题 整数划分问题是算法中的一个经典命题之一,有关这个问题的讲述在讲解到递归时基本都将涉及。所谓整数划分,是指把一个正整数n写成如下形式: n=m1+m2+...+mi; (其中mi为正整数,并且1 递归法: 递推表达式如下: f(n, m)= 1;转载 2012-09-11 23:16:11 · 1740 阅读 · 0 评论 -
完全二叉树,n到m的属于n的子树上的节点
#include #include using namespace std; const int N_1=19; const int N_2=2; void main() { int x = log(N_1)/log(2); int y = log(N_2)/log(2); int temp = x; int u = 0; int flag = fals原创 2012-09-13 22:57:56 · 1414 阅读 · 0 评论 -
两个队列实现一个栈&两个栈实现一个队列
//用两个队列实现一个栈,永远保证出的队列中只有一个元素,Q1为出队列,Q2为暂存队列 //进栈:进入Q1 //出栈:Q1中仅留一个元素,其余元素进入Q2,Q1出队列,Q2中所有元素进入Q1 //栈空:即Q2为空 #include #include typedef struct node { int data; struct node *next; }Node; type原创 2012-10-08 10:01:30 · 558 阅读 · 0 评论 -
求1000以内的素数
//求素数,该方法是利用大于6的素数可以表示为6n+1或6n+5,而它的约数应为小于等于它的平方根 #include #include const int Max = 1000; void Method_1(); void Method_2(); void main() { Method_1(); // Method_2(); } void Method_原创 2012-10-08 20:42:43 · 4601 阅读 · 0 评论 -
两数组中的相同元素
//找两个数组中的相同元素,首先对两数组分别排序 #include int Same[20]; int SameElement(int Array1[20],int Array2[20]); void quickSort(int Array[20],int left,int right); void main() { int Array1[20] = {1,21,2,22,3原创 2012-10-11 23:03:17 · 745 阅读 · 0 评论 -
二叉树交换左右子树
#include #include typedef struct Node{ int data; struct Node* LChild; struct Node* RChild; }Tree; void createTree(Tree **T) { int data = 1; scanf("%d",&data); if ( data != 0) {原创 2012-10-31 20:46:17 · 25436 阅读 · 2 评论 -
tcp序列号回绕与解决
转自: http://blog.chinaunix.net/uid-24830931-id-3358067.html 问题描述 tcp协议头中有seq和ack_seq两个字段,分别代表序列号和确认号。tcp协议通过序列号标识发送的报文段。seq的类型是__u32,当超过__u32的最大值时,会回绕到0。 一个tcp流的初始序列号(ISN)并不是从0开始的,而转载 2016-06-27 13:30:44 · 11460 阅读 · 4 评论