码迷,mamicode.com
首页 > 其他好文 > 详细

luogu umi的函数

时间:2018-06-23 22:45:35      阅读:268      评论:0      收藏:0      [点我收藏+]

标签:mes   存在   直接   string   测试   recommend   line   不可   字符串   

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

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];

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

luogu umi的函数

标签:mes   存在   直接   string   测试   recommend   line   不可   字符串   

原文地址:https://www.cnblogs.com/xrj1229/p/9217548.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!