比赛场次 373
比赛名称 20170519
比赛状态 已结束比赛成绩
开始时间 2017-05-19 19:00:00
结束时间 2017-05-19 22:00:00
开放分组 全部用户
注释介绍
题目名称 strcmp()函数
输入输出 strcmp.in/out
时间限制 1000 ms (1 s)
内存限制 512 MiB
测试点数 10 简单对比
用户 结果 时间 内存 得分
Gravatar31627012 AAAAAAAAAA 0.413 s 29.94 MiB 100
GravatarHyoi_0Koto AAAAAAAAAA 0.436 s 34.94 MiB 100
Gravatarswttc AAWWWWWWWW 2.179 s 4.18 MiB 20
GravatarHyoi_sstream AWWWEEEEEE 0.414 s 0.90 MiB 10
GravatarTARDIS MMMMMMMMMM 0.000 s 0.00 MiB 0
GravatarShirry WWWWWWWTTT 8.832 s 76.91 MiB 0

strcmp()函数

★★☆   输入文件:strcmp.in   输出文件:strcmp.out   简单对比
时间限制:1 s   内存限制:512 MiB

【题目描述】

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

【来源】

《算法竞赛入门经典-训练指南》