题意:
给定一个长度为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;
}