| 题目名称 | 2695. strcmp()函数 | 
|---|---|
| 输入输出 | strcmp.in/out | 
| 难度等级 | ★★☆ | 
| 时间限制 | 1000 ms (1 s) | 
| 内存限制 | 512 MiB | 
| 测试数据 | 10 | 
| 题目来源 |  | 
| 开放分组 | 全部用户 | 
| 提交状态 | |
| 分类标签 | |
| 分享题解 | 
| 通过:4, 提交:16, 通过率:25% | ||||
|  | 100 | 0.754 s | 36.41 MiB | C++ | 
|  | 100 | 1.020 s | 7.07 MiB | C++ | 
|  | 100 | 1.192 s | 6.77 MiB | C++ | 
|  | 100 | 1.204 s | 7.77 MiB | C++ | 
|  | 90 | 3.224 s | 80.71 MiB | C++ | 
|  | 80 | 3.365 s | 6.69 MiB | C++ | 
|  | 80 | 3.859 s | 82.84 MiB | C++ | 
|  | 80 | 4.187 s | 72.63 MiB | C++ | 
|  | 80 | 4.360 s | 80.47 MiB | C++ | 
|  | 70 | 5.404 s | 112.64 MiB | C++ | 
| 本题关联比赛 | |||
| 20170519 | |||
| 关于 strcmp()函数 的近10条评论(全部评论) | ||||
|---|---|---|---|---|
| 
lrj原书原题? 
2017-06-02 20:51
2楼
 | ||||
| 
纯暴力也能过? 说好的trie树并没有出现。 纳尼考试时我连暴力都错了・゜・(PД`q。)・゜・…… 
2017-05-31 19:09
1楼
 | ||||
strcmp()是c/c++的一个库函数,它的作用是比较两个字符串的字典序大小。在本题中,考虑strcmp()的如下实现。
int strcmp(char *s,char *t)
{
int i;
for(i=0;s[i]==t[i];i++)
if(s[i]=='\0')
return 0;
return s[i]-t[i];
}
如上所述,比较操作一直进行到两个字符串的对应位置处的字符不相同为止(假定字符串总是以'\0'结尾)。比如,strcmp("than","that")和strcmp("there","the")各需要7次比较(注意s[i]==t[i]和s[i]=='\0'各有一次比较),如下图所示。
 
 
输入n个字符串,两两调用一次strcmp()(即一共调用n(n-1)/2次),问字符比较的总次数是多少?
输入文件包含不超过10组测试数据,每组测试数据的第一行为一个整数N(0<N<4001),即字符串总数,接下来N行每行包含一个不超过1000个由'0'~'9'、'a~z'和'A~Z'组成的非空字符串。输入结束标志为N=0。输入文件大小约为23M。
对于每组测试数据,输出一行内容,先输出测试数据编号,再输出字符比较的总次数T(详细输出格式见样例)。输入保证T在64位带符号整数范围内。
2 a b 4 cat hat mat sir 0
Case 1: 1 Case 2: 6
《算法竞赛入门经典-训练指南》