Online Judge | Problem Set | Authors | Online Contests | User | ||||||
---|---|---|---|---|---|---|---|---|---|---|
Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest |
Re:我的算法哪里错了??In Reply To:我的算法哪里错了?? Posted by:evil at 2004-05-09 12:09:29 > 新手,请多帮助。 > > > #include<stdio.h> > #include<string.h> > int a[5],h,w,up[5],down[5],left[5],right[5],num; > char s[31][31],z[125][6]; > void search(int k) > { > int m,n,e; > if(k==5) > { > for(int x=0;x<5;x++) > z[num][x]=a[4-x]+'A'; > z[num][5]='\0'; > num++; > } > for(int i=4;i>-1;) > { > a[k]=i; > for(int j=0;j<k;j++) > if(a[k]==a[j]) goto tt; > for(m=up[i];m<=down[i];) > { > e=s[m][left[i]]-'A'; > for(n=0;n<=k;n++) > if(a[n]==e)goto aa; > goto tt; > aa: e=s[m][right[i]]-'A'; > for(n=0;n<=k;n++) > if(a[n]==e)goto bb; > goto tt ; > bb: m++; > } > for(m=left[i];m<=right[i];) > { > e=s[up[i]][m]-'A'; > for(n=0;n<=k;n++) > if(a[n]==e)goto cc; > goto tt; > cc: e=s[down[i]][m]-'A'; > for(n=0;n<=k;n++) > if(a[n]==e)goto dd; > goto tt; > dd: m++; > } > search(k+1); > tt: i--; > } > } > int main() > { > int i,j; > while(scanf("%d%d",&h,&w)!=-1) > { > for(i=0;i<h;i++) > scanf("%s",&s[i]); > for(i=0;i<5;i++) > { > up[i]=h; > left[i]=w; > right[i]=down[i]=0; > > } > for(i=0;i<h;i++) > for(j=0;j<w;j++) > { > if(s[i][j]>='A'&&s[i][j]<='E') > { > int w=s[i][j]-'A'; > if(up[w]>i)up[w]=i; > if(down[w]<i)down[w]=i; > if(left[w]>j)left[w]=j; > if(right[w]<j)right[w]=j; > } > } > > num=0; > search(0); > for(i=0;i<num;i++) > for(j=i+1;j<num;j++) > if(strcmp(z[i],z[j])>0) > { > char d[10]; > strcpy(d,z[i]); > strcpy(z[i],z[j]); > strcpy(z[j],d); > } > for(i=0;i<num;i++) > printf("%s\n",z[i]); > > } > return 0; > } Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator