我有n个字符长度不超过m的字符串。例如:str1 = "ABC", str2 = "ABD".....
如果按字母排序,会有str1 < str2,即str1在str2的前面。
现在希望的是构造一个函数f = F(str),使得当str1 < str2时,F(str1) < F(str2),f为正整数.
Thanks

解决方案 »

  1.   

    原型:extern int strcmp(char *s1,char * s2);
            
      用法:#include <string.h>
      
      功能:比较字符串s1和s2。
      
      说明:
            当s1<s2时,返回值<0
            当s1=s2时,返回值=0
            当s1>s2时,返回值>0
    //加个负号+_+
    int f(str1, str2)
    {
    return ((-)strcmp(str1,str2));
    }
      

  2.   

    int F(string str)
    {
    const char *c = str.c_str();
    char*tmp = new char[strlen(c)*2+1];
    memset(tmp,0,strlen(c)*2+1);
    //string tmp;
    if (c==0)
    {
    return 0;
    }
    for (int i=0; i<strlen(c); i++)
    {
    char* t=new char[3];
    sprintf(t,"%02d",(int)(c[i]-32));
    t[2] = 0;
    strcat(tmp,t);
    } tmp[strlen(c)*2] = 0;
    return atoi(tmp);
    }
    void f1()
    {
    cout<<F("abc")-F("abb")<<endl;
    }