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 |
我的算法哪里错了??新手,请多帮助。 #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