1 条题解
-
0
自动搬运
来自洛谷,原作者为

qiaotutu
洛谷爱好の蒟蒻o้้้้๎๎๎๎้้้้๎๎๎๎้้้้๎๎๎๎้้้้๎๎๎๎้้้้๎๎๎๎้้้้๎๎๎๎้้้้๎๎๎๎๎้๎搬运于
2025-08-24 21:17:53,当前版本为作者最后更新于2025-05-21 21:49:36,作者可能在搬运后再次修改,您可在原文处查看最新版自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多
以下是正文
B4212 题解
(新手第一次发题解,如有错误,敬请见谅)
其实这道题只是看着难,把它拆开就简单了:把这道题拆成两部分——读数字与比大小。
1. 读数字
我们不要管什么字符、空格什么的,反正就是看见数字、小数点就读入字符串,有其它的字符就停止读入。
注意读入数字位数。(若两数相同,数字位数区别只在小数部分,不用特判)下列代码:
if(isdigit(s[i])) { while(isdigit(s[i])||s[i]=='.'&&i<s.length()) { going.push_back(s[i]); i++; item++; } }(代码中的 为 string 类型, 为 for 循环的 int 型变量, 和 为 int 型变量)
2. 比大小
这里推荐使用 stod()函数,将 string 转化 double(后称新值)来比较最大值。有两个比较逻辑:
新值比最大值大时:
if(stod(going)>stod(nums)) { nums=going; plusm=item; }新值等于最大值时,比较位数:
if(stod(going)==stod(nums)) { if(item>plusm) { nums=going; plusm=item; } }最后直接输出字符串即可。
(用双精度输出实在闲)
温馨提示:每次循环后记得清空位数计数器和临时字符串!AC 代码
#include<bits/stdc++.h> using namespace std; int plusm=-1; string nums="-1"; int main(){ int item=0; string s,going=""; getline(cin,s); for(int i=0;i<int(s.length());i++) { if(isdigit(s[i])) { while(isdigit(s[i])||s[i]=='.'&&i<s.length()) { going.push_back(s[i]); i++; item++; } if(stod(going)>stod(nums)) { nums=going; plusm=item; } else if(stod(going)==stod(nums)) { if(item>plusm) { nums=going; plusm=item; } } going.clear(); item=0; } } cout << nums; return 0; }谢谢观看!
- 1
信息
- ID
- 7692
- 时间
- 1000ms
- 内存
- 512MiB
- 难度
- 3
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者