luogu umi的函数
这道题很让我头疼的一个地方就是它好像大多数情况下都有多组解╭(╯^╰)╮
呀( ⊙ o ⊙ )!我并没有做出它,来我们看题解!‘
其实我一开始想骗部分分数来着,因为仔细分析题面,就可知z字符串中,不可能有字符大于x字符串中的对应字符,如果有,就输出-1,但是我字符串用的太不熟了~~~~(>_<)~~~~,还有就是luogu给的第二个测试样例把我搞蒙了,于是我提交了"Hello,World!"骗测试样例O(∩_∩)O哈哈~︿( ̄︶ ̄)︿
这个题一开始没有做出来的原因是,字符串y由x和z取min得到,但题中只给出x和y,我并不知道在这个题中,如何用x串和y串得到z串。
先放上一种超棒的做法
题解上是这样说的:
输出-1的想法和我一样,最妙的就在于对字符串y的输出上:
如果存在y那么,因为y就是由a字符串和y字符串每一位不断取最小得到的,所以y就是z的一组解,直接输出z就好咯︿( ̄︶ ̄)︿O(∩_∩)O哈哈~\(^o^)/~(⊙v⊙)(*^◎^*)~\(≧▽≦)/~啦啦啦,看代码
不得不说,这个return 0真的太巧妙啦
#include<iostream> #include<cstdio> using namespace std; char x[1001],y[1001]; int main() { int n; scanf("%d",&n); cin>>x; cin>>y; for(int i=0;i<=n-1;i++) { if(x[i]<y[i]) { printf("-1\n"); // break; return 0; } } printf("%s",y); // cout<<y<<endl; return 0; }
题解上还有一种枚举的做法,没有上面的那么巧妙,但是也不错的\(^o^)/~
话说贴题解之前,我要先介绍一下char和string的区别:
String 是字符串
char是字符
再结合代码仔细看看吧\(^o^)/~
#include<iostream> #include<cstdio> using namespace std; char x[1001],y[1001],ans[1001]; int n; int main() { scanf("%d",&n); scanf("%s",x); scanf("%s",y); for(int i=0;i<=n-1;i++) { if(x[i]>y[i]) { ans[i]=y[i]; } if(x[i]==y[i]) { ans[i]=x[i]+1; } if(x[i]<y[i]) { printf("-1\n"); return 0; } } printf("%s",ans); return 0; }
特别注意,ans[i]=x[i]+1;不能写成ans[i]=x[i];
啦啦啦写完啦~\(≧▽≦)/~啦啦啦哈哈哈^_^
风过林梢,骄阳正好
彼时他们正当年少。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现