CodeForces 288A--贪心

来源:互联网 发布:mac可以玩守望先锋吗 编辑:程序博客网 时间:2024/06/07 00:43

题意:

给定一个长度为n的字符串,让你用前k种小写字母将字符串排成一个长度为n的,左右相邻字母不相同的,且字典序最小的字符串。注

意必须要用K种。如果不能做到则输出-1.


输入:

7 4

4 7

输出:

ababacd

-1


分析:

此题是一道典型的贪心问题,既要保证字符串中任意两个连续字符串不同,也要保证字典序最小,最简单的想法是只用a,b交替,在最后补上其他字符串即可。当k=1或者n<k时,输出-1,一定要找准-1的条件是什么。


代码:

#include <bits/stdc++.h>using namespace std;int main(){    int n,m;    cin >>n>>m;    if (m==1&&n==1)    {        cout <<'a';        return 0;    }    if(m>n||m==1)    {        cout <<-1<<endl;        return 0;    }    for (int i=1; i<=n-(m-2); i++)    {        if (i%2==1)            cout <<'a';        else            cout <<'b';    }    for (int i=1; i<=m-2; i++)        cout <<(char)(i+98); //从c开始    return 0;}



0 0
原创粉丝点击