
编程练习
文章平均质量分 55
真水壶
这个作者很懒,什么都没留下…
展开
-
Morris遍历
解释:点击打开链接#include#include#include#include#include#include#include#include#include#include#includeusing namespace std;struct bst_node{ int key; bst_node *left; bst_node *right; bst原创 2014-07-12 13:51:19 · 631 阅读 · 0 评论 -
最优二叉查找树
>>算法导论P215def Optimal_OBT(p,q,n): e=[[0 for col in range(n+1)]for row in range(n+2)] #期望代价 w=[[0 for col in range(n+1)]for row in range(n+2)] #概率总和 root=[[0 for col in range(n+1)]for row原创 2013-08-31 23:23:31 · 638 阅读 · 0 评论 -
Charpter 12
#includeusing namespace std;//12.1 - 12.4class Person{ public: Person(const string &nm,const string &ad): name(nm),address(ad) { } string getName() const { return name; } strin原创 2013-10-11 12:53:29 · 508 阅读 · 0 评论 -
Charpter3
#include#includeusing std::cout;using std::cin;using std::string;using std::endl;int main(){ string s1,s2; cin>>s1>>s2; if(s1==s2) { cout<<"s1 equals to s2"<<endl; } else { if(s1>s2)原创 2013-10-05 15:37:59 · 488 阅读 · 0 评论 -
练习3.1
//Essential c++ 3.1#include#include#include#include#includeusing namespace std;int main(){ const int elemsize=6; string notneed[elemsize]={"a","an","or","the","and","but"}; set原创 2013-10-19 19:39:33 · 546 阅读 · 0 评论 -
语法分析程序
my_table={"begin":1,"if":2,"then":3,"while":4,"do":5, "end":6,"+":13,"-":14,"*":15,"/":16,":":17, ":=":18,"":21,"":23,">=":24, "=":25,";":26,"(":27,")":28,"#":0}syn_Lis原创 2013-10-24 23:07:30 · 820 阅读 · 0 评论 -
filter函数Demo
#include#includeusing namespace std;vector filter(const vector &ivec,int value,bool (*is_func) (int,int)){ vector ans; for(int ix=0;ix!=ivec.size();ix++) { if(is_func(ans[ix],v原创 2013-10-18 18:49:12 · 574 阅读 · 0 评论 -
map,set,iostream iterator使用demo
//统计单词出现次数,use map#include#include#includeusing namespace std;int main(){ map words; string word; while(cin>>word) { words[word]++; } for(map::iterator it=words.原创 2013-10-19 18:17:46 · 637 阅读 · 0 评论 -
二叉查找树
>>算法导论P151 二叉查找树支持多种动态集合操作,包括Search,Minimum,Maximum,Predecessor,Successor,Insert,Delete。原创 2013-09-02 20:31:14 · 464 阅读 · 0 评论 -
字符串模式匹配
#include#include//Naive版本,>>数据结构P79int StringMatch(char* s,char* t){ int i=0,j=0; int len_s=strlen(s); int len_t=strlen(t); while(i<len_s && j<len_t){ if(s[i]==t[j]){ ++i; ++j; } el原创 2013-09-11 18:54:34 · 830 阅读 · 0 评论 -
希尔排序
#includeusing namespace std;inline void swap(int &a,int &b){ int tmp=a; a=b; b=tmp;}void shellSort(int a[],int n){ for(int step=5;step>=1;step-=2)//步长取5,3,1 { for(int begin=0;begin!=step;原创 2014-03-22 14:04:33 · 422 阅读 · 0 评论 -
const使用例程
//const 使用例程void func1();void func2();void func3();int main(){ func1();//const 在*号左边 func2();//const 在*号右边 func3();//两边都有const return 0;}void func1(){ int a=2; const int *b=&a;//b 类型原创 2013-12-15 19:01:15 · 640 阅读 · 0 评论 -
矩阵链乘法
>>算法导论201def MATRIX_CHAIN_ORDER(p): n=len(p)-1#n is 矩阵个数 m=[[0 for col in range(n+1)]for row in range(n+1)]#m[i][j] is 对应矩阵计算 最优值 s=[[0 for col in range(n+1)]for row in range(n+1)]#分割点记录原创 2013-08-24 18:28:13 · 707 阅读 · 0 评论 -
数字三角形
def Triangel(a,n): #d[i][j]即为状态,从格子(i,j)出发能得到的最大值 d=[[0 for col in range(n+1)] for row in range(n+1)] for i in range(n+1): d[n][i]=a[n][i] #双重循环自下而上计算最大和 i=n-1 while(i原创 2013-08-30 10:59:19 · 550 阅读 · 0 评论 -
判断单链表中是否存在环
//判断单链表中是否存在环int IsExitCircle(Node* head){ Node *pslow=head,*pfast=head; while(pfast && pfast->pnext) { pslow=pslow->pnext; pfast=pfast->pnext->pnext; if(pfast == pslow) { return true原创 2013-10-03 13:24:56 · 536 阅读 · 0 评论 -
二叉树非递归遍历
#include#includeusing namespace std;typedef struct bintree{ char data; struct bintree *leftchild; struct bintree *rightchild;}BinTree;BinTree* Node(char data,BinTree *leftchild,BinTree *rig原创 2013-12-21 23:31:22 · 474 阅读 · 0 评论 -
基数排序
#includeusing namespace std;const int RADIX = 16;void radixSort(int a[],int len){ //getMax 用于控制循环次数 int max=a[0]; for(int i=1;i!=len;i++) { if(a[i]>max) max=a[i]; } int _module=RADIX; w原创 2014-03-22 19:05:02 · 449 阅读 · 0 评论 -
词法分析程序
my_table={"begin":1,"if":2,"then":3,"while":4,"do":5, "end":6,"+":13,"-":14,"*":15,"/":16,":":17, ":=":18,"":21,"":23,">=":24, "=":25,";":26,"(":27,")":28,"#":0}def s原创 2013-10-14 22:33:46 · 824 阅读 · 0 评论 -
装配线调度
>>算法导论P192def print_stations(L,optimal,n): i=optimal['L_final'] print("Line"+str(i)+" ,"+"station"+str(n)) j=n while j>=2: i=L[i][j] print("Line"+str(i)+" ,"+"station"+原创 2013-08-24 10:18:21 · 580 阅读 · 0 评论 -
练习4.1
#include#include#includeusing namespace std;class Stack{public: bool push(const string &elem); bool pop(string &elem); bool peek(string &elem); bool empty(); bool full();原创 2013-10-20 11:26:52 · 544 阅读 · 0 评论 -
Dijkstra算法
#-*- coding: cp936 -*- -*-from sys import maxintclass shortestPath: @staticmethod def dijkstra(node,connected,origin,path,d): #关键是 按路径长度递增 求得各顶点的路径 originIndex = node.index(o原创 2014-06-07 16:19:01 · 477 阅读 · 0 评论 -
Floyd算法
#-*- coding: cp936 -*- -*-from sys import maxintclass shortestPath: @staticmethod def floyd(node,connected,path): for i in range(len(node)): for j in range(len(node)):原创 2014-06-07 17:48:47 · 427 阅读 · 0 评论 -
拓扑排序
#-*- coding: cp936 -*- -*-import sysdef topologicSort(node,connected): for i in range(len(node)): isOk = False #是否可以继续 mark=-1 for key in connected: if not c原创 2014-06-06 20:05:30 · 496 阅读 · 0 评论 -
最小生成树
# -*- coding: utf8 -*-from sys import maxintfrom heapq import *class edge: adjvex='' lowcost=maxintclass miniSpanTree: @staticmethod def prime(node,connected,begin): #适用于边原创 2014-06-06 16:31:46 · 418 阅读 · 0 评论 -
图的遍历
# -*- coding: utf8 -*-from collections import dequeclass GraphDfs: @staticmethod def DFSTraverse(node,connected,visited): for i in range(len(visited)): if not visited[i]:原创 2014-06-05 23:18:47 · 578 阅读 · 0 评论 -
找出第K大的数
#includeusing namespace std;int partition(int a[],int left,int right){ const int pivot= a[left]; while(left < right) { while(left =pivot) right--; a[left]=a[right];原创 2014-03-25 17:12:34 · 458 阅读 · 0 评论 -
合并有序数组
/* 合并两个有序的数组, 假设数组a能容纳合并的结果*/int mergeArray(int *a,const int a_len,const int a_size, int *b,const int b_len){ if(a==NULL || b==NULL || a_len<0 || b_len<0 || a_len + b_len > a_size) r原创 2014-04-20 15:16:06 · 411 阅读 · 0 评论 -
寻找发帖水王
#includeusing namespace std;int findWaterKing(int a[],int n){ int candidate,times=0; for(int i=0;i!=n;i++) { if(times==0) { candidate=a[i]; times++; } else { if(candidate==a[i原创 2014-03-24 15:10:05 · 617 阅读 · 0 评论 -
反转链表
struct node{ int value; struct node* next;};struct node * reverseList(struct node *head){ if(!head || !head->next) return head; struct node *pre=head,*cur=head->next; head->next=0; while(cu原创 2014-02-02 14:50:05 · 496 阅读 · 0 评论 -
合并排序链表
#include#includeusing namespace std;struct listNode{ int data; listNode *pNext;};listNode * mergeSortedList_0(listNode * pHead1,listNode *pHead2){ if(pHead1==NULL) return pHead2; if(pHead原创 2014-01-29 19:40:02 · 517 阅读 · 0 评论 -
partition操作
void swap(int *a,int *b){ int tmp=*b; *b=*a; *a=tmp;}int partition(int a[],int left,int right){ const int pivot=a[0]; while(left < right) { while(left =pivot) right--; swap(&a[left],&a[r原创 2014-01-31 00:02:15 · 791 阅读 · 0 评论 -
Charpter4
#include#includeusing namespace::std;void func_47(){ //copy of array const size_t arr_size = 7; int arr1[arr_size]={0,1,2,3,4,5,6}; int arr2[arr_size]; for(int i=0;i<arr_size;原创 2013-10-06 13:52:01 · 526 阅读 · 0 评论 -
fork函数Demo
函数原型 pid_t fork( void);其中 #define pid_t int#include#include#include#includeint main(){ int a=100; int pid=fork(); if(pid==0)// { puts("child process"); printf("%d\t",a); a=20原创 2013-10-17 13:07:11 · 765 阅读 · 0 评论 -
二分查找
def Recursive_Binary_Search(T,left,right,key): if left>right: return -1 #找不到 mid = (left+right)//2 #向下取整 if key == T[mid]: return mid elif key > T[mid]: return原创 2013-09-04 21:59:44 · 471 阅读 · 0 评论 -
字符串移位包含
#include#includeint StringShiftContain(char src[],char des[]){ int src_len=strlen(src); //double_src means 'srcsrc' char* double_src = (char*)malloc(src_len*2+1); strcpy(double_src,src);原创 2013-10-02 17:32:13 · 539 阅读 · 0 评论 -
计算字符串的相似度
#CSD means CalculateStringDistancedef CSD(StrA,ABegin,AEnd,StrB,BBegin,BEnd): global Memory if ABegin > AEnd: if BBegin > BEnd: return 0 # StrA and StrB are all empty原创 2013-10-02 22:31:43 · 627 阅读 · 0 评论 -
堆排序
#includeusing namespace std;void heapify(int a[],int len,int top){ //更改堆顶元素后,维持堆的性质 while(top < len) { int left=2*top+1,right=2*top+2; int largest; if(left < len && a[top]<a[left]) {原创 2014-03-21 11:58:38 · 488 阅读 · 0 评论 -
windows下C语言多线程编程Demo
#include #include #include void ChildThread(void* param){ int *ele=(int*)param; printf("%d\t",*ele); _endthread();}int main(){ int i; int data[5]={1,2,3,4,5}; for(i=0;i!=5;i++) { _be原创 2013-10-13 18:52:35 · 2999 阅读 · 0 评论 -
广度优先搜索
>>算法导论P325def bfs_graph(graph,s): queue=[] queue.append(s) while queue: u=queue.pop(0) print(u,end=' ')#访问顶点u is_visited[u]=True for each in graph[u]:原创 2013-08-25 23:43:17 · 606 阅读 · 0 评论 -
八皇后问题
#n=int(input("? queens problem\n"))n=8 #8 queens problem,n>=4c=[0 for i in range(n)] #用c[i]表示第i行皇后的列编号total=0 #解的总数def search(current): global total if current == n: #递归边界,原创 2013-08-29 21:58:32 · 664 阅读 · 0 评论