6Luffy6

导航

Bear and String Distance


传送锚点:

codeforces.com

Copy

4 26
bear

output

roar

input

2 7
af

output

db

input

3 1000
hey

output

-1

思路

此题答案不限
有点类似贪心,每一步都要做到最佳,将k不断变小

code

#include<iostream>
#include<vector>
#include<algorithm>
#include<cstring>
using namespace std;
int main()
{
	int n, k;//n为单词长度,k为要求的值
	cin >> n >> k; 
	string input;
	cin >> input;
	string res;//输出答案
	for (int i = 0; i < input.size(); i++) {
		if(!k){
          //这句话不能省略,若还没遍历完input,k就为0,原封不动输出nint
			res += input[i];
			continue;
		}
		int x = input[i] - 'a', y = 'z' - input[i];
      //x、y可分别理解为到字母a、z的距离
		if (x >= y) {
			if (x >= k) res += (char)(input[i] - k), k = 0;
          //若改为input[i] + k会报错,可能会超了26个字母范围
			else k -= x, res += 'a';
		}
		else {
			if (y >= k) res += (char)(input[i] + k), k = 0; 
          //若改为input[i] - k会报错,可能会超了26个字母范围
			else k -= y, res += 'z';
		}
	}
	if (k) cout << -1 << endl;
	else cout << res << endl;
	return 0;
}

posted on 2024-05-15 10:16  极客三刀流  阅读(18)  评论(0)    收藏  举报