小红的字符串构造和小红的排列构造

2024-05-13 02:28

本文主要是介绍小红的字符串构造和小红的排列构造,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

小红的字符串构造

小红希望你构造一个长度为nnn的、仅包含小写字母的字符串,其中恰好有kkk个长度大于1的回文子串。你能帮帮她吗?输入两个整数n,k,用空格隔开。 1≤n≤10^5,0≤k≤n/2.一个字符串。如果有多解输出任意即可。 可以证明,一定存在至少一个合法解。

#include<iostream>
#include<string.h>
using namespace std;
const int N = 1e6+6;
typedef long long ll;
ll n , k;
string s;
int main()
{cin >> n >> k;char c = 'a';for(int i=0;i<k;i++){s += c;s += c;c ++;if(c > 'z') c = 'a';}while(s.size() < n){s += c;c ++;if(c > 'z') c = 'a';}cout << s;return 0;
}

小红的排列构造

定义两个数组a和b的汉明距离为:有多少个下标iii满足ai≠bi。例如,[2,3,1]和[1,3,1]的汉明距离是1。现在小红拿到了一个长度为n的排列p,她希望你构造一个长度为n的排列q,满足p和q的汉明距离恰好等于k。排列指长度为n的数组,其中1到n每个元素恰好出现了一次。第一行输入两个正整数n,k,代表排列p的长度,以及构造后的q和p的汉明距离。 第二行输入n个正整数pi​,代表小红拿到的排列。 1≤n,k≤10^5,1≤ai≤n;如果无解,请输出-1。 否则输出n个正整数qi,代表小红构造的排列。

 

#include<iostream>
using namespace std;
const int N=1e5+5;
typedef long long ll;
int a[N];
int main()
{int n,k;cin>>n>>k;for(int i=0;i<n;i++){cin>>a[i];}if(k>n||k==1)cout<<"-1\n";else{for(int i=0;i<k-1;i+=2){swap(a[i],a[i+1]);}if(k%2) swap(a[k-1],a[0]);for(int i=0;i<n;i++){cout<<a[i]<<" \n"[i==n-1];}}return 0;
}

 执行交换操作

for(int i=0;i<k-1;i+=2){
swap(a[i],a[i+1]);
}
if(k%2)
swap(a[k-1],a[0]);

对于 k 的每个偶数索引(从0开始),与其下一个索引(即奇数索引)进行交换。例如,如果 k=4,则交换 a[0] 和 a[1],然后交换 a[2] 和 a[3]

如果 k 是奇数,则额外交换 a[k-1] 和 a[0]

这篇关于小红的字符串构造和小红的排列构造的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/984424

相关文章

Java 字符数组转字符串的常用方法

《Java字符数组转字符串的常用方法》文章总结了在Java中将字符数组转换为字符串的几种常用方法,包括使用String构造函数、String.valueOf()方法、StringBuilder以及A... 目录1. 使用String构造函数1.1 基本转换方法1.2 注意事项2. 使用String.valu

python修改字符串值的三种方法

《python修改字符串值的三种方法》本文主要介绍了python修改字符串值的三种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学... 目录第一种方法:第二种方法:第三种方法:在python中,字符串对象是不可变类型,所以我们没办法直接

JAVA中整型数组、字符串数组、整型数和字符串 的创建与转换的方法

《JAVA中整型数组、字符串数组、整型数和字符串的创建与转换的方法》本文介绍了Java中字符串、字符数组和整型数组的创建方法,以及它们之间的转换方法,还详细讲解了字符串中的一些常用方法,如index... 目录一、字符串、字符数组和整型数组的创建1、字符串的创建方法1.1 通过引用字符数组来创建字符串1.2

C#中字符串分割的多种方式

《C#中字符串分割的多种方式》在C#编程语言中,字符串处理是日常开发中不可或缺的一部分,字符串分割是处理文本数据时常用的操作,它允许我们将一个长字符串分解成多个子字符串,本文给大家介绍了C#中字符串分... 目录1. 使用 string.Split2. 使用正则表达式 (Regex.Split)3. 使用

Java中JSON字符串反序列化(动态泛型)

《Java中JSON字符串反序列化(动态泛型)》文章讨论了在定时任务中使用反射调用目标对象时处理动态参数的问题,通过将方法参数存储为JSON字符串并进行反序列化,可以实现动态调用,然而,这种方式容易导... 需求:定时任务扫描,反射调用目标对象,但是,方法的传参不是固定的。方案一:将方法参数存成jsON字

leetcode105 从前序与中序遍历序列构造二叉树

根据一棵树的前序遍历与中序遍历构造二叉树。 注意: 你可以假设树中没有重复的元素。 例如,给出 前序遍历 preorder = [3,9,20,15,7]中序遍历 inorder = [9,3,15,20,7] 返回如下的二叉树: 3/ \9 20/ \15 7   class Solution {public TreeNode buildTree(int[] pr

每日一题|牛客竞赛|四舍五入|字符串+贪心+模拟

每日一题|四舍五入 四舍五入 心有猛虎,细嗅蔷薇。你好朋友,这里是锅巴的C\C++学习笔记,常言道,不积跬步无以至千里,希望有朝一日我们积累的滴水可以击穿顽石。 四舍五入 题目: 牛牛发明了一种新的四舍五入应用于整数,对个位四舍五入,规则如下 12345->12350 12399->12400 输入描述: 输入一个整数n(0<=n<=109 ) 输出描述: 输出一个整数

C和指针:字符串

字符串、字符和字节 字符串基础 字符串就是一串零个或多个字符,并且以一个位模式为全0的NUL字节结尾。 字符串长度就是字符串中字符数。 size_t strlen( char const *string ); string为指针常量(const修饰string),指向的string是常量不能修改。size_t是无符号数,定义在stddef.h。 #include <stddef.h>

PHP字符串全排列

方法一: $str = 'abc';$a =str_split($str);perm($a, 0, count($a)-1);function perm(&$ar, $k, $m) {if($k == $m){ echo join('',$ar), PHP_EOL;}else {for($i=$k; $i<=$m; $i++) {swap($ar[$k], $ar[$i]);perm($ar

PHP7扩展开发之字符串处理

前言 这次,我们来看看字符串在PHP扩展里面如何处理。 示例代码如下: <?phpfunction str_concat($prefix, $string) {$len = strlen($prefix);$substr = substr($string, 0, $len);if ($substr != $prefix) {return $prefix." ".$string;} else