
算法
operatingtuzi
这个作者很懒,什么都没留下…
展开
-
输出字符串中某个字串出现的次数
int substrcnt(char *str1,char *str2){ if(*str2==0||*str1==0) return 0; int cnt=0; char *s2=str2,*s1=str1; while(*s1!=0) { while(*s2!=0&&*s1==*s2) { ++s1;++s2; } if(*s2==0) ++cnt; if(s2==str2原创 2009-02-20 19:11:00 · 569 阅读 · 0 评论 -
汉诺塔
void move(char a,char b){ cout}void hano(char a,char b,char c,int n){ if(n==1) { move(a,c); return ; } hano(a,c,b,n-1); move(a,c); hano(b,a,c,n-1); }原创 2009-02-22 14:26:00 · 470 阅读 · 0 评论 -
选择排序( 稳定)
void SelectSort(int a[],int n){ int k,min; for(int i=0;i { min=a[i]; for(int j=i+1;j { if(a[j] { min=a[j]; k=j; } } a[k]=a[i]; a[i]=min; }}原创 2008-12-21 14:44:00 · 457 阅读 · 0 评论 -
直接插入排序(稳定)
templatevoid InsertSort(T a[],int n){ T temp; for(int i=1;i { for(int j=i;j>0&&a[j] { temp=a[j-1]; a[j-1]=a[j]; a[j]=temp; } }}原创 2008-12-21 14:41:00 · 550 阅读 · 0 评论 -
希尔排序(不稳定)
void ShellSort(int a[],int n){ for(int len=n/2;len>0;len/=2) { for(int i=len;i { int j=i,temp; while(j>0&&a[j] { temp=a[j-1]; a[j-1]=a[j]; a[j]=temp; j-=len; } } }}原创 2008-12-21 14:42:00 · 838 阅读 · 0 评论 -
备忘录方法与动态规划比较
动态规划算法的基本要素: 1 最优子结构性质当问题的最优解包含了其子问题的最优解时,称该问题具有最优子结构性质。2 重叠子问题性质 动态规划算法对每个问题只解一次,将其解保存在一个表格中,当再次需要解此问题时,用常数时间查看一下结果。因此,用动态规划算法通常只需要多项式时间。备忘录方法:•用一个表格来保存已解决的子问题的答案,用的时候查表即可。 •采用的递归方式是自顶向下。•控制结构原创 2008-12-21 14:00:00 · 11047 阅读 · 2 评论 -
回文数问题
void main(){ char a[50]; cin>>a; int len=strlen(a);int i=0,j=len-1; for(;i if(a[i]!=a[j]) break; cout=j?"yes":"not");}原创 2008-12-21 14:35:00 · 649 阅读 · 0 评论 -
动态规划解0-1背包问题
int min(int a,int b){ return a}int max(int a,int b){ return a>b?a:b;}void knap(int *w,int *v,int **m,int n,int c){ int mm=min(w[n-1]-1,c); for(int i=0;i m[n-1][i]=0; for(int j=w[n-1];j m[n-1][j]=v[原创 2008-12-21 21:38:00 · 515 阅读 · 0 评论 -
回溯法解装载问题
递归解法#includeusing namespace std;int bestw=0;int cw=0;int num=3;int r=46;int bestx[3];void load(int *w,int c,int n,int *x){ if(n>=num) { if(cw>bestw) { for(int i=0;i { bestx[i]=x[i]; bestw=c原创 2008-12-26 00:11:00 · 957 阅读 · 0 评论