1、程序代码程序,表达式#include#include#includechar A200;int p;int stack_d200;int top_d=-1;char stack_o200;int top_o=-1;int prec(char ch1,char ch2) switch (ch1) case #: switch(ch2) case #: return 0; case +: return -1; case -: return -1; case *: return -1; case /: return -1; case (: return -1; case ): return 0; c
2、ase : return -1; case +: switch(ch2) case #: return 1; case +: return 1; case -: return 1; case *: return -1; case /: return -1; case (: return -1; case ): return 1; case : return -1; case -: switch(ch2) case #: return 1; case +: return 1; case -: return 1; case *: return -1; case /: return -1; case
3、 (: return -1; case ): return 1; case : return -1; case *: switch(ch2) case #: return 1; case +: return 1; case -: return 1; case *: return 1; case /: return 1; case (: return -1; case ): return 1; case : return -1; case /: switch(ch2) case #: return 1; case +: return 1; case -: return 1; case *: re
4、turn 1; case /: return 1; case (: return -1; case ): return 1; case : return -1; case (: switch(ch2) case #: return -1; case +: return -1; case -: return -1; case *: return -1; case /: return -1; case (: return -1; case ): return 0; case : return -1; case : switch(ch2) case #: return 1; case +: retu
5、rn 1; case -: return 1; case *: return 1; case /: return 1; case (: return -1; case ): return 1; case : return -1; int isdigit(char ch) if(ch=0&ch=9) return 1; else return 0;int extract() int s=0; while(isdigit(Ap) s=s*10+Ap-0; p+; return s;int compute(int x,int y,char ch) int i,s=1; switch(ch) case
6、 +: return x+y; case -: return x-y; case *: return x*y; case /: return x/y; case : for(i=1;i=y;i+) s=s*x; return s; int main() int i,j,k,len,x,y; char ch; scanf(%s,A); len=strlen(A); Alen=#; stack_o+top_o=#; p=0; while(p=len) i=isdigit(Ap); if(i=1) j=extract(); stack_d+top_d=j; else j=prec(stack_oto
7、p_o,Ap); switch(j) case -1: stack_o+top_o=Ap; p+; break; case 0: -top_o; p+; break; default: y=stack_dtop_d-; x=stack_dtop_d-; ch=stack_otop_o-; k=compute(x,y,ch); stack_d+top_d=k; printf(%d,stack_d0); system(pause); return 0;Threading程序#include#include#include/ A(B(D,E(F(J,),G),C(,H)struct Tnode ch
8、ar data; struct Tnode *lchild,*rchild;char A2000;int len;struct Tnode *root=0;char stack100;int top=-1;void createTree(struct Tnode * &p,int l,int r) int i,j,k; if(lr) return; p=(struct Tnode *)malloc(sizeof(struct Tnode); p-data=Al; p-lchild=0; p-rchild=0; if(lrchild,l+3,r-1); return; else if(Ar-1=
9、,) createTree(p-lchild,l+2,r-2); return; else if(Al+3=,) createTree(p-lchild,l+2,l+2); createTree(p-rchild,l+4,r-1); return; stack+top=Al+3; i=l+4; while(ir) if(Ai=() stack+top=Ai; else if(Ai=) top-; if(toplchild,l+2,i); createTree(p-rchild,i+2,r-1); void preorder(struct Tnode *p) printf(%c ,p-data)
10、; if(p-lchild) preorder(p-lchild); if(p-rchild) preorder(p-rchild); void bfs(struct Tnode *p) struct Tnode *que1000; struct Tnode *q; int front=0,rear=0; querear+=p; while(front!=rear) q=quefront+; printf(%c ,q-data); if(q-lchild) querear+=q-lchild; if(q-rchild) querear+=q-rchild; struct Tnode *stac
11、k_i100;int top_i=-1;void gofarleft(struct Tnode *p) struct Tnode *q=p; while(q-lchild) stack_i+top_i=q; q=q-lchild; stack_i+top_i=q;void inorder(struct Tnode *p) struct Tnode *q; gofarleft(p); while(top_i=0) q=stack_itop_i-; printf(%c ,q-data); if(q-rchild) gofarleft(q-rchild); int main() int i,j,k;
12、 freopen(input.txt,r,stdin); freopen(output.txt,w,stdout); gets(A); len=strlen(A); createTree(root,0,len-1); /preorder(root); /bfs(root); inorder(root); system(pause); return 0;N CHOOSE K#include#include_int64 nchoosek(int n,int k) int i,j; _int64 m=1; for(i=1;i=k;i+) m=m*(n-i+1); m=m/i; return m;in
13、t main() _int64 m; m=nchoosek(13,3)*nchoosek(13,1) *nchoosek(13,2)*nchoosek(13,4); printf(%I64dn,m); system(pause); return 0;REATION #include#includeint F5001;int find(int x) int t; if(Fx=x) return x; t=find(Fx); Fx=t; return t;int main() int i,j,k,x,y,fx,fy; int n,m,p; scanf(%d%d%d,&n,&m,&p); for(i
14、=1;i=n;i+) Fi=i; for(i=1;i=m;i+) scanf(%d%d,&x,&y); fx=find(x); fy=find(y); if(fx!=fy) Ffx=fy; for(i=1;i=p;i+) scanf(%d%d,&x,&y); fx=find(x); fy=find(y); if(fx!=fy) printf(NOn); else printf(YESn); system(pause); return 0;POJ1240#include#include#includeint m,len;char A100,B100;_int64 sum=1;_int64 nch
15、oosek(int n,int k) int i,j; _int64 m=1; for(i=1;i=k;i+) m=m*(n-i+1); m=m/i; return m;void count(int prel,int prer,int postl,int postr) int i,j,k=0,u; if(prel=prer) return; i=prel+1; u=postl; while(i=prer) j=u; while(Bj!=Ai) j+; k+; count(i,j-u+i,u,j); i=j-u+i+1; u=j+1; sum=sum*nchoosek(m,k);int main
16、() scanf(%d%s%s,&m,A,B); len=strlen(A); count(0,len-1,0,len-1); printf(%I64dn,sum); system(pause); return 0; KMP算法#include#include#includechar S1000;char T100;int lens,lent;int next100;void makenext() int i,j; i=0;j=-1; nexti=j; while(ilent) if(j=-1|Ti=Tj) i+; j+; nexti=j; else j=nextj; int getIndex
17、() int i,j; i=0; j=0; while(ilens&jlent) if(j=-1|Si=Tj) i+;j+; else j=nextj; if(j=lent) return i-j; else return -1;int main() int i,j,k; gets(S); gets(T); lens=strlen(S); lent=strlen(T); k=getIndex(); printf(%d,k); system(pause); return 0;KMP 1#include#include#includechar S1000,T100;int next100;int
18、lens,lent;void makenext() int i,j; next0=-1; i=0;j=-1; while(ilent) if(j=-1|Ti=Tj) i+; j+; nexti=j; else j=nextj; int getIndex() int i,j; i=0; j=0; while(ilens&jlent) if(j=-1|Si=Tj) i+; j+; else j=nextj; if(j=lent) return i-j; else return -1;int main() int i,j,k; gets(S); gets(T); lens=strlen(S); le
19、nt=strlen(T); makenext(); k = getIndex(); printf(%dn,k); system(pause); return 0;Native#include#include#includechar S1000;char T100;int lens,lent;int getIndex() int i,j,k; i=0; j=0; while(ilens&jlent) if(Si=Tj) i+; j+; else i=i-j+1; j=0; if(j=lent) return i-j; else return -1;int main() int i,j,k; ge
20、ts(S); gets(T); lens=strlen(S); lent=strlen(T); k=getIndex(); printf(%d,k); system(pause); return 0;creatTree #include#include#include/ A(B(D,E(F(J,),G),C(,H)struct Tnode char data; struct Tnode *lchild,*rchild;char A2000;int len;struct Tnode *root=0;char stack100;int top=-1;void createTree(struct T
21、node * &p,int l,int r) int i,j,k; if(lr) return; p=(struct Tnode *)malloc(sizeof(struct Tnode); p-data=Al; p-lchild=0; p-rchild=0; if(lrchild,l+3,r-1); return; else if(Ar-1=,) createTree(p-lchild,l+2,r-2); return; else if(Al+3=,) createTree(p-lchild,l+2,l+2); createTree(p-rchild,l+4,r-1); return; st
22、ack+top=Al+3; i=l+4; while(ir) if(Ai=() stack+top=Ai; else if(Ai=) top-; if(toplchild,l+2,i); createTree(p-rchild,i+2,r-1); void preorder(struct Tnode *p) printf(%c ,p-data); if(p-lchild) preorder(p-lchild); if(p-rchild) preorder(p-rchild); void bfs(struct Tnode *p) struct Tnode *que1000; struct Tno
23、de *q; int front=0,rear=0; querear+=p; while(front!=rear) q=quefront+; printf(%c ,q-data); if(q-lchild) querear+=q-lchild; if(q-rchild) querear+=q-rchild; struct Tnode *stack_i100;int top_i=-1;void gofarleft(struct Tnode *p) struct Tnode *q=p; while(q-lchild) stack_i+top_i=q; q=q-lchild; stack_i+top_i=q;void inorder(struct Tnode *p) struct Tnode *q; gofarleft(p); while(top_i=0) q=stack_itop_i-; printf(%c ,q-data); if(q-rchild) gofarleft(q-rchil
copyright@ 2008-2023 冰点文库 网站版权所有
经营许可证编号:鄂ICP备19020893号-2