luogu umi的函数

这道题很让我头疼的一个地方就是它好像大多数情况下都有多组解╭(╯^╰)╮

P3742 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是字符

char数组可以表示字符串,比如:char[10]就是一个字符串
而String就可以不用定义后面的数组,还有char定义的字符串后面与String定义的字符串相比较起来缺少一个‘终结符’。
 再结合代码仔细看看吧\(^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];

啦啦啦写完啦~\(≧▽≦)/~啦啦啦哈哈哈^_^

posted @   aquAAA  阅读(153)  评论(0编辑  收藏  举报
编辑推荐:
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示