我有n个字符长度不超过m的字符串。例如:str1 = "ABC", str2 = "ABD".....
如果按字母排序,会有str1 < str2,即str1在str2的前面。
现在希望的是构造一个函数f = F(str),使得当str1 < str2时,F(str1) < F(str2),f为正整数.
Thanks
如果按字母排序,会有str1 < str2,即str1在str2的前面。
现在希望的是构造一个函数f = F(str),使得当str1 < str2时,F(str1) < F(str2),f为正整数.
Thanks
解决方案 »
- WSAGetLastError 返回值32,3997698,851971分别代表什么意思?
- VS2008下的hello程序也非要打包一堆的东西吗?
- 链表做的通讯录,在MFC中使用serialize保存成了乱码,求教!
- 进程间使用共享内存,传递指针进行大数据量的交互
- 誰有 FileMon 的源碼?發一份給我吧,多謝了。sfilter 的也行
- 谁写过虚拟打印机的程序,或有相关资料
- 菜鸟问题:带数组参数的函数是怎样定义的???
- 怎样可以使一个button有按ESC的功能
- 急........excell操作取不到列的数据
- 有哪位VC高手给我讲讲VARIANT这个东东???
- 窗口销毁问题
- CAsyncSocket 类问题,连接后服务端Socket设备断电,客户端Socket怎样才能知道哪?
用法:#include <string.h>
功能:比较字符串s1和s2。
说明:
当s1<s2时,返回值<0
当s1=s2时,返回值=0
当s1>s2时,返回值>0
//加个负号+_+
int f(str1, str2)
{
return ((-)strcmp(str1,str2));
}
{
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;
}