九度 题目1419:文献排序

来源:互联网 发布:异或java 编辑:程序博客网 时间:2024/05/18 01:10

Mark 一下一直存在的错误,以后再说明错误的原因

这个题目属于简单的题目,但是我一直没有通过,原因是红色的标注那行,因为我一直是小于n,然后手动添加\0作为结尾,而不是小于等于n。

#include <iostream>#include <string>#include <cstring>#include <algorithm>using namespace std;struct Node{    char A[210];};char Change(char p){    if(p>='A'&&p<='Z')        p=p-'A'+'a';    return p;}bool stringCompareIgnoreCase(const Node &lhs,const Node & rhs){    char lp[210];    char hp[210];    int n=strlen(lhs.A);    <span style="color:#ff0000;">for(int i=0;i<=n;i++)</span>        lp[i]=Change(lhs.A[i]);    n=strlen(rhs.A);   <span style="color:#ff0000;"> for(int i=0;i<=n;i++)</span>        hp[i]=Change(rhs.A[i]);    return strcmp(lp,hp)<0;}int main(){    //freopen("data.in","r",stdin);    Node resu[210];    int num;    while(cin>>num)    {        cin.ignore();        for (int i=0;i<num;i++)        {            cin.getline(resu[i].A,210);        }        sort(resu,resu+num,stringCompareIgnoreCase);        for (int i=0;i<num;i++)        {            cout<<resu[i].A<<endl;        }    }    return 0;}/**************************************************************    Problem: 1419    User: vincent_ynh    Language: C++    Result: Accepted    Time:130 ms    Memory:1524 kb****************************************************************/


0 0
原创粉丝点击