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:大家小心密码串和明码串不等长的情况啊 也要输出NO的!!!!In Reply To:大家小心密码串和明码串不等长的情况啊 也要输出NO的!!!! Posted by:3902100816 at 2011-07-19 19:21:07 > /*我submit了N次 就是不AC 上网问了大牛 才知道两个串是否等长需要判断……*/ > > #include<iostream> > using namespace std; > void QuickSort(char *p,int headmark,int tailmark) > { > if(headmark>=tailmark)//排序区域长度不大于1,不需再排 > {return;} > > int temp,emp,big,small; > temp=p[headmark]; > small=headmark; > big=tailmark; > > while(small<big) > { > while(small<big && p[big]>=temp) > --big; > p[small]=p[big]; > > while(small<big && p[small]<=temp) > ++small; > p[big]=p[small]; > } > emp=big; > p[emp]=temp;//定位枢轴值 > QuickSort(p,headmark,emp-1); > QuickSort(p,emp+1,tailmark); > } > > int main() > { > char code[100],mes[100]; > int i; > while(cin>>code>>mes) > //cin>>code>>mes; > { > int td; > bool p=0,ga=0; > for(td=0;td<=26;td++) > { > if(strlen(mes)!=strlen(code))//加了这句,果断AC- -! > break;//容错考虑 > char temp[100]; > for(i=0;i<strlen(code);i++) > { > temp[i]=code[i]; > } > p=1; > for(i=0;i<strlen(code);i++)//先解开替代方式 > { > temp[i]=temp[i]-td; > if(temp[i]<'A') > {temp[i]='Z'-('A'-temp[i])+1;} > } > QuickSort(temp,0,strlen(code)-1); > QuickSort(mes,0,strlen(code)-1);//快排替代的结果 > for(i=0;i<strlen(code);i++) > { > if(mes[i]!=temp[i]) > {p=0;break;} > } > if(p) > {ga=1;break;} > } > if(ga) > cout<<"YES"<<endl; > else > cout<<"NO"<<endl; > } > return 0; > } > 》The lengths of both lines of the input are equal and do not exceed 100. 可测试数据又搞不相等的 这个有点忽悠人啊 Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator