数据结构与算法设计
文章平均质量分 79
tsinfeng
这个作者很懒,什么都没留下…
展开
-
链式链的实现
MyStack.h..............................................................................................................................................................................................#include#define NULL 0class Stack;class StackNode原创 2010-07-24 11:32:00 · 479 阅读 · 1 评论 -
贪心法
<br />贪心法<br /> <br />贪心算法(又称贪婪算法)是指,在对问题求解时,总是做出在当前看来是最好的选择。也就是说,不从整体最优上加以考虑,他所做出的仅是在某种意义上的局部最优解。贪心算法不是对所有问题都能得到整体最优解,但对范围相当广泛的许多问题他能产生整体最优解或者是整体最优解的近似解。<br /> <br />两个重要性质:<br />1)最优子结构。当一个问题的最优包含其子问题的最优解时,称此问题具有最优子结构。问题的最优子是采用贪心法或动态规划法的关键性质 。<br />2)贪原创 2010-09-29 17:30:00 · 649 阅读 · 0 评论 -
回溯法
回溯法:// BagTackback.cpp : Defines the entry point for the console application.//#include "stdafx.h"#includeusing namespace std;class Knapsack//背包{private: int n;//物品个数 int c;//背包容量 int *w;//物品重量数组指针 int *p;//物品价值数组指针 int cw;//背包内物品当前原创 2010-09-28 09:57:00 · 638 阅读 · 0 评论 -
1到N自然数排序
有N个大小不等的自然数(1--N),请将它们由小到大排序。 要求程序算法:时间复杂度为O(n),空间复杂度为O(1)。void sort(int e[], int n) { int i; int t; /*临时变量:空间复杂度O(1)*/ for (i=1; i 看了看总觉得不大妙,用他这个算法写了个程序试了下,数组{5,4,3,1,2}排序完之后是{2,1,3,4,5},根本没有达到效果,一时有些迷茫.仔细转载 2010-09-26 14:13:00 · 2742 阅读 · 3 评论 -
分治算法
<br />分治算法的基本思想是将一个规模为N的问题分解为K个规模较小的子问题,这些子问题相互独立且与原问题性质相同。求出子问题的解,就可得到原问题的解。<br /> <br />基本思想<br /> <br /> 当我们求解某些问题时,由于这些问题要处理的数据相当多,或求解过程相当复杂,使得直接求解法在时间上相当长,或者根本无法直接求出。对于这类问题,我们往往先把它分解成几个子问题,找到求出这几个子问题的解法后,再找到合适的方法,把它们组合成求整个问题的解法。如果这些子问题还较大,难以解决,原创 2010-09-23 21:36:00 · 517 阅读 · 0 评论 -
汉诺塔问题解法
#include#includeusing namespace std;void move(int n,string str1,string str2){ cout"}void hannoi(int n,string a,string b,string c){ if(n>0) { hannoi(n-1,a,c,b); move(n,a,c); hannoi(n-1,b,a,c); }原创 2010-09-23 15:05:00 · 1491 阅读 · 0 评论 -
Dijkstra算法
<br />#include<iostream><br />#include<iomanip><br />#include<fstream><br /><br />#define N 5<br />#define MAXNUM 32767<br />using namespace std;<br />int Edge[N][N];<br />int s[N];<br />int path[N];<br />int dist[N];<br /><br />void sh原创 2010-09-20 19:47:00 · 448 阅读 · 0 评论 -
二叉链表
<br /><br />struct bnode //结点类型<br />{ struct bnode * lchild; //左孩子指针<br /> ElemTypedata; //抽象数据元素类型<br /> structbnode * rchild; //右孩子指针<br /> }*root;<br /> <br />生成二叉链表C算法1<br />#define LENG转载 2010-09-17 21:56:00 · 4088 阅读 · 0 评论 -
八皇后非递归法
#include #include using namespace std;const int MAXSIZE = 8;//棋盘大小int chess[MAXSIZE][MAXSIZE]={0};//棋盘/* 定义栈结点,表示一个皇后的位置*/struct Node{ int row; /* 行*/ int col; /* 列*/ bool isMarked; /* 是否标记*/};/* 进行皇后问题处理 * 返回找到的答案个数 */原创 2010-09-16 16:34:00 · 681 阅读 · 0 评论 -
八皇后回溯法
#include#include#include#include#includeusing namespace std;int a[8];int methods=0;ofstream fout("D://VCSun//backTrace//result.txt");void drawChess(){ if(!fout) { fout } methods++; fout fout f原创 2010-09-16 16:34:00 · 509 阅读 · 0 评论 -
中序表达式求值
<br />对于一个数学表达式,语言编译系统是怎么求值的呢?<br />通常的做法是对一个数学中序表达式求逆波兰式(后序表达式),然后再求值。<br /> <br />笔者用C#写了一个中序表达式求值的类,以供参考<br /> <br />using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace Expression{ class Exp {原创 2010-10-03 15:00:00 · 2457 阅读 · 0 评论