博文
波松分酒问题 C++求最优解(2006-10-24 19:07:00)
摘要:某人有12品脱啤酒一瓶,想从中倒出6品脱,但他没有6品脱的容器,仅有一个8品脱和一个5品脱的容器,怎样才能将啤酒分为两个6品脱?抽象分析:b = 大容器,也表示容积s = 小容器,也表示容积(f),(h),(e) 状态f=满, e=空, h=数字,表示容量运算一: b(f) - s(e) => b(b - s), s(f)变例 b(h) - s(e) => b(h - s), s(f)运算二: b(e) + s(f) => b(s), s(e)变例 b(h) + s(f) => b(f), s(s - b + h)引出 b(f) - s(h) b(h) - s(h) b(e) + s(h) b(h) + s(h) 如果以瓶中酒的数量为节点, 通过一次以上运算可达到节点之间认为连通.此题可转化为一个有向图的搜索问题.即找出.指定节点(12, 0, 0) 和 (6, 6, 0)之间的最小路径. */#include <cstdio>#include <deque>#i......
c++实现的链表的数据结构(2006-10-18 17:34:00)
摘要:#include"iostream.h"#include"stdio.h"#include"stdlib.h"
#define TRUE 1#define FALSE 0#define OK 1#define ERROR 0#define INFEASIBLE -1#define OVERFLOAT -2#define MAXSIZE 100
typedef int status;typedef int ElemType;
typedef struct LNode{ ElemType data; struct LNode *next;} *Link,*Position;
class LinkList{private: Link head; int len;public: status InitList(LinkList &L); status DestroyList(LinkList &L); void FreeNode(Link p); status ClearList(LinkList &L); status InsFirst(LinkList &L,Link s); status Remove(LinkList &L,Link p); status InsBefore(LinkList &L,Link p,Link s); status InsAfter(LinkList &L,Link p,Link s); status SetCurElem(Link p,ElemType &e); ElemType GetElem(Link p); int ListLength(LinkList L); Position GetHead(LinkList L); Position GetLast(LinkList L); status PriorPos(LinkList L,Link p,Position &q); status NextPos(LinkList L,Link p,Position &......
C语言程序设计入门学习六步曲(2006-10-18 15:55:00)
摘要:http://www.programfan.com/club/showbbs.asp?id=191578......
