在 C++ 中重新排列前 N 个数字,使它们处于 K 距离

在 c++ 中重新排列前 n 个数字,使它们处于 k 距离

给定整数变量,比如说 N 和 K。任务是首先计算 N 的排列,然后重新排列排列,使其与每个元素的距离为 K。

让我们看看各种输入输出场景 –

输入– int n = 20, int k = 2

输出

strong>− 重新排列前 N 个数字,使其处于 K 距离处:3 4 1 2 7 8 5 6 11 12 9 10 15 16 13 14 19 20 17 18。

解释

立即学习“C++免费学习笔记(深入)”;

说明 strong>− 我们给出整数变量 ‘N’ 即 20 和 ‘K’ 即 2。现在我们将计算 ‘N’ 的排列,即 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 , 11, 12, 13, 14, 15, 16, 17, 18. 19, 20. 现在,我们将以这样的方式排列元素,使所有元素与每个元素的距离为“k”。

输入− int n = 10, int k = 3

输入− int n = 10, int k = 3

输入p>

输出– 重新排列前 N 个数字以使它们处于 K 距离:不可能

解释 – 我们给出了整数变量’N’ 即 10,’K’ 即 3。现在我们将计算 ‘N’ 的排列,即 1, 2, 3, 4, 5, 6, 7, 8, 9, 10。现在,我们将排列元素以这样的方式,所有元素都与每个元素相距“k”距离,但对于给定的输入值是不可能的。

下面的程序中使用的方法如下

输入一个整数类型元素,即’N’和’K’。

调用函数Rearrangement(int n, int k) 通过将 N 和 K 作为参数传递给函数。

函数内部 Rearrangement(int n, int k)

声明一个整型变量为 temp 并设置为 n % (2 * k)。

声明一个整型数组为大小为 n + 的 ptr 1 即 prt[n+1]。

检查 IF k = 0 然后开始从 i 到 1 循环 FOR 直到 i 小于 size 并将 i 增加 1 并打印 i .

检查 IF temp 不等于 0,然后打印 NOT POSSIBLE。

开始从 i 到 1 的 FOR 循环,直到 i 小于

开始从 i 到 1 的 FOR 循环,直到 i 小于 n,并将 i 设置为 i + 2 * k。在循环内部,启动另一个循环 FOR 从 j 到 1,直到 j 小于 k 并将 j 加 1。在循环内部,通过传递 ptr[i + j -1] 和 ptr[k + i + j 调用 swa 方法- 1] 作为参数。

开始从 i 到 1 的 FOR 循环,直到 i 小于 N 并将 i 增加 1。

打印 prt[i]。

打印结果。

示例

#include using namespace std;void Rearrangement(int n, int k){   int temp = n % (2 * k);   int ptr[n + 1];   if(k == 0){      for(int i = 1; i <= n; i++){         cout << i << " ";      }      return;   }   if(temp != 0){      cout<<"Not Possible";      return;   }   for(int i = 1; i <= n; i++){      ptr[i] = i;   }   for(int i = 1; i <= n; i += 2 * k){      for(int j = 1; j <= k; j++){         swap(ptr[i + j - 1], ptr[k + i + j - 1]);      }   }   for(int i = 1; i <= n; i++){      cout << ptr[i] << " ";   }}int main(){   int n = 20;   int k = 2;   cout<<"Rearrangement of first N numbers to make them at K distance is: ";   Rearrangement(n, k);   return 0;}

输出

如果我们运行上面的代码,它将生成以下输出

Rearrangement of first N numbers to make them at K distance is: 3 4 1 2 7 8 5 6 11 12 9 10 15 16 13 14 19 20 17 18

以上就是在 C++ 中重新排列前 N 个数字,使它们处于 K 距离的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1444936.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月17日 22:01:49
下一篇 2025年12月17日 22:02:05

相关推荐

  • 不相交集合数据结构或并查集算法介绍

    不相交集信息结构,也称为并查算法,可能是计算机科学中的一个基本概念,它为解决与分配和网络相关的问题提供了有效的方法。它对于解决包括组件集和确定它们的连接在内的问题特别有价值。在本文中,我们将研究语言结构、算法以及在 C++ 中执行不相交集合信息结构的两种独特方法。我们还将提供完全可执行的代码示例来说…

    好文分享 2025年12月17日
    000
  • 最长的子字符串,其中相邻的字符没有相邻的英文字母

    在字符串操作领域,识别模式和提取有意义的子字符串是常见任务。一个有趣的问题涉及找到最长的子串,其中没有相邻字符是相邻的英文字母。在本文中,我们将使用 C++ 深入研究此问题的有效解决方案,并提供清晰的解释和示例测试用例。 问题陈述 给定一串小写英文字母,我们需要找到没有相邻字符是相邻英文字母的最长子…

    2025年12月17日
    000
  • 将C/C++程序转换为预处理器代码

    这里我们将看到如何从 C 或 C++ 程序的源代码生成预处理或预处理器代码。 要使用 g++ 编译器查看预处理代码,我们必须使用 ‘-E ‘ 选项与 g++。 预处理器包含代码中的所有 # 指令,并且还扩展了 MACRO 函数。 语法 g++ -E program.cpp 示…

    2025年12月17日
    000
  • 在C语言中,将数组中经过N次移动后的1的数量进行统计

    给定一个大小为 N 的数组。该数组最初全为 0。任务是数数。 N 次移动后数组中 1 的个数。每个第 N 步都有一个关联的规则。规则是 – 第一次移动 – 更改位置 1、2、3、4………….. 的元素 第二次移动 – 更改位置 2、4、6、8………….. 第三次移…

    2025年12月17日
    000
  • 在C++中实现B*-树

    B*-Tree:C++ 中用于快速数据检索的优化数据结构 B* 树是一种自平衡树数据结构,针对快速数据检索进行了优化。它是 B 树的变体,B 树是一种树数据结构,旨在保持数据排序和平衡。 B树的特点是它具有高度的有序性,这意味着它的节点以特定的方式保持排序。 B* 树与 B 树类似,但它经过优化以获…

    2025年12月17日
    000
  • 在双向加权图中,通过删除任意K条边,找到给定节点之间的最短距离

    简介 这个 C 程序通过移除任意 K 条边来计算双向加权图中两个给定节点之间的最短距离。它使用了修改过的 Dijkstra 算法,将移除 K 条边视为限制条件。该程序使用了一个优先队列来高效地选择节点,并根据移除的要求动态调整边的权重。通过遍历图并找到最短路径,它给出了给定节点之间的最小距离,并考虑…

    2025年12月17日
    000
  • 使用C++编写,找到满足方程的六元组的数量

    在本文中,我们将描述一种寻找满足方程的六元组的方法。因此,我们以一个方程为例,需要找到满足下面方程的a、b、c、d、e和f的值。 ( a + b + c ) * e / d = f 让我们重新排序方程 − ( a + b + c ) = ( f * d ) / e 这是给定问题的一个简单示例 &#8…

    2025年12月17日
    000
  • 写一个C程序,打印“ Tutorials Point ”,不使用分号

    在不使用分号的情况下打印任何字符串,我们需要了解标准输出的工作原理以及为什么使用分号。 分号是一种行结束语句,用于告诉程序该行在此结束。这里使用的标准打印语句printf是标准io库的一种方法。让我们深入了解printf()方法。 int printf(const char *format , ..…

    2025年12月17日
    000
  • 递归求n^x的各位数字之和,其中n和x都非常大,使用C++实现

    我们被赋予正整数变量“num”和“x”。任务是递归计算 num ^ x,然后将所得数字的数字相加,直到达到个位数为止,所得的个位数将作为输出。 让我们看看各种输入输出场景为此 – 输入 − int num = 2345, int x = 3 输出 − n 中数字的递归和^x,其中 n 和…

    2025年12月17日
    000
  • 具有与给定字符串中其他字符频率之和相等的字符

    简介 C++ 字符串是字母数字字符流。字符串具有以下属性 – 字符串由一组固定的字符组成 字符串位置默认从第 0 个索引开始 任何字符的频率是指它在字符串中出现的次数。任何字符的频率范围可以从 0 (如果它没有出现到字符串的长度)。 在本文中,我们将开发一个代码,该代码将字符串作为输入,…

    2025年12月17日
    000
  • 在C语言中,复合字面量

    In this section we will see what is the compound literals in C. The compound literals are introduced in C99 standard in C. Using this feature, it can …

    2025年12月17日
    000
  • 使用C++程序将字符串中的所有辅音替换为最近的元音

    该方法旨在用字母表中最接近的元音(也称为小写拉丁字母)替换一串辅音。如果两个元音同样接近,我们可以用这些字母中的第一个元音来替换它们。 让我们来看一些输入场景 – 假设我们有一个字符串,比如“ebgkjasjd”,现在我们需要将字符串中所有出现的辅音字母替换为最近的元音字母。 Input…

    2025年12月17日
    000
  • C编程求和序列2、22、222、……的代码

    给定一个序列:2,22,222,2222……,我们需要找到这个序列的和。因此,我们必须寻找用于求级数之和的数学公式, 公式的解释是这样的 – sum =[2+22+222+2222….]sum= 2*[1+11+111+1111….]S…

    2025年12月17日
    000
  • C++程序打印字典

    映射是 C++ 中的一种特殊类型的容器,其中每个元素都是一对两个值,即键值和映射值。键值用于索引每个项目,映射值是与键关联的值。无论映射值是否唯一,键始终是唯一的。要在 C++ 中打印映射元素,我们必须使用迭代器。一组项目中的一个元素由迭代器对象指示。迭代器主要与数组和其他类型的容器(例如向量)一起…

    2025年12月17日
    000
  • C程序解释goto语句

    c 程序计算五个数字的平方根。变量 count 存储读取的数字的计数。当count小于或等于5时,goto read语句将控制指向读取的标签。否则,程序打印一条消息并停止。 Goto 语句 它在正常的程序执行顺序之后使用,将控制权转移到程序的其他部分。 程序 以下是使用 goto 语句的 C 程序 …

    2025年12月17日
    000
  • 检查字符串中的所有字符是否可以通过增加或减少来使其相等

    在这个问题中,我们需要检查是否可以通过增加和减少操作使字符串的所有字符相等。我们可以根据字符的ASCII值得到每个字符的权重,并检查总权重是否可以用来使所有字符相等。 问题陈述 – 我们给出了长度为 N 的字符串 str,其中包含小写字母字符。我们需要检查是否可以通过选择两个字符中的任意一个,增加一…

    2025年12月17日
    000
  • 从一个字符串数组中找出由A个0和B个1组成的最长子集的长度

    在这个问题中,我们需要找到最多包含A个0和B1的最长子集。我们需要做的就是使用数组元素找到所有可能的子集,并找到包含最多 A 0 和 B1 的最长子集。 在本教程中,首先,我们将学习递归方法来解决问题。之后,我们将使用动态规划的方法来优化代码。 问题陈述 – 我们给出了一个包含 N 个二…

    2025年12月17日
    000
  • 解释C语言中与语句块相关的作用域规则

    作用域规则与以下因素有关 − 变量的可访问性。变量的存在期。变量的使用边界。 与语句块相关的作用域规则如下所示 − 语句块由花括号括起来,包含一组语句。 在语句块中声明的变量可以在该块中访问和使用,但在块外部不存在。 立即学习“C语言免费学习笔记(深入)”; 示例1 以下是与与语句块相关的作用域规则…

    2025年12月17日
    000
  • 使用一个数据结构实现多个栈(K个栈)

    动态多栈是一种非常出色的数据结构,它具有在多个栈中存储元素的能力,栈的数量是不断变化的。只使用一个数据结构来实现K个栈可能是一项艰巨的任务。在本教程中,我们将探讨两种不同的方法来使用C++执行动态多栈(K个栈)。第一种方法使用一个数组来存储元素,还有两个额外的数组来监视栈的最顶端和下一个索引。第二种…

    2025年12月17日
    000
  • C++0x兼容C吗?

    C++ (98) 和新标准(C++0x 或 C++11)均不与 C 完全兼容。C++ 从未与 C 完全兼容。 以上就是C++0x兼容C吗?的详细内容,更多请关注创想鸟其它相关文章!

    2025年12月17日
    000

发表回复

登录后才能评论
关注微信