HDU 2054 A == B ?A但是看不太明白,麻烦高手解析

2024-12-04 06:10:00
推荐回答(2个)
回答1:

#include
#include
#include
char str1[100000], str2[100000];
void deal(char *str)
{
int len;
char *p = str;
while( *p == '0')/这个while循环是用来删除前导的无用的零,用下面的那个strcpy来实现,那个函数如果不知道什么意思自己百度!
p++;
strcpy(str, p);
if(strchr(str, '.'))/这个函数就是来查找新的字符串里面是否有小数点存在。
{
len = strlen(str);
p = len + str - 1;/使指针指向字符串数组的最后一个字符。
while( *p == '0')/这里我自己改了一下应该更容易看懂,其实就是把后面末尾的零消掉。
{
*p = '\0';
p--;
}
if (*p == '.')/这里应该不用解释了吧!
*p = 0;

}
}

int main( )
{

while(scanf("%s%s", str1,str2)!= EOF) {
deal(str1);
deal(str2);
if (strcmp(str1, str2) == 0)
puts("YES");
else
puts("NO");
}
return 0;
}

好了,我的理解是这样,希望对你有帮助!!!

回答2:

原理是去掉末尾多余的0和小数点(如果能去掉的话)还有多余的前导0
最后比较2字串