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> int relation[100][100],checksum,testsum,allcheck; int findmore(int index1,int index2); int findless(int index1,int index2) { int i,k1,k2; if(index1>checksum||index2>checksum)return -1; if(index1==index2)return -1; if(relation[index1][index2]!=0) { if(relation[index1][index2]!=-1||relation[index2][index1]!=1)return -1; else return 1; }//if relation[index1][index2]=-1;allcheck++; for(i=1;i<=checksum;i++) { if(relation[i][index1]==-1) { if(i==index2)return -1; k1=findless(i,index2); k2=findmore(index2,i); if(k1==-1||k2==-1)return -1; }//if }//for i return 1; }//findless int findmore(int index1,int index2) { int i,k1,k2; if(index1>checksum||index2>checksum)return -1; if(index1==index2)return -1; if(relation[index1][index2]!=0) { if(relation[index1][index2]!=1||relation[index2][index1]!=-1)return -1; else return 1; } relation[index1][index2]=1;allcheck++; for(i=1;i<=checksum;i++) { if(relation[i][index1]==1) { if(i==index2)return -1; k1=findless(index2,i); k2=findmore(i,index2); if(k1==-1||k2==-1)return -1; }//if }//for i return 1; }//findmore int main() { int num[30],i,j,a,b,t,determine,position,k1,k2,kkk;char st[10]; while(true) { scanf("%d%d",&checksum,&testsum);if(checksum==0&&testsum==0)break; determine=0;position=0;allcheck=0;kkk=checksum*(checksum-1); for(i=1;i<=checksum;i++)for(j=1;j<=checksum;j++)relation[i][j]=0; for(i=1;i<=testsum;i++) { scanf("%s",st);a=st[0]-'A'+1;b=st[2]-'A'+1; if(st[1]=='>')t=a,a=b,b=t; if(determine==1)continue; k1=findmore(b,a);k2=findless(a,b); if(k1==-1||k2==-1){determine=1,position=i;continue;} if(allcheck>=kkk&&!determine)determine=2,position=i; }//for i if(determine==0)printf("Sorted sequence cannot be determined.\n"); else if(determine==1)printf("Inconsistency found after %d relations.\n",position); if(determine!=2)continue; for(i=1;i<=checksum;i++)num[i]=i; for(i=1;i<=checksum;i++) { for(j=i+1;j<=checksum;j++) { if(relation[num[i]][num[j]]==1) { k1=num[i],num[i]=num[j],num[j]=k1; }//if }//for j }//for i printf("Sorted sequence determined after %d relations: ",position); for(i=1;i<=checksum;i++)printf("%c",num[i]+'A'-1); printf(".\n"); }//while }//main Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator