打印给定元素排列的程序[关闭]

2023-12-01

我最近参加了 ACM 认证的编程竞赛。这是我当时做不到的问题:

“给定一个包含 n 个元素的整数数组,编写一个程序来打印所有排列。”

请告诉我这道题该怎么做。有什么算法可以做这类题吗?


假设没有重复:只需用所有可能的后续元素更改每个元素,然后递归调用该函数。

void permute(int *array,int i,int length) { 
  if (length == i){
     printArray(array,length);
     return;
  }
  int j = i;
  for (j = i; j < length; j++) { 
     swap(array+i,array+j);
     permute(array,i+1,length);
     swap(array+i,array+j);
  }
  return;
}

可以看到带有辅助功能的代码swap() and printArray()执行基本测试用例ideone

Bonus: 这个和这个想法很相似费希尔-耶茨洗牌,但在这里 - 而不是交换元素i与随机选择的以下元素 - 您将其与所有元素交换 - 一次每个元素。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

打印给定元素排列的程序[关闭] 的相关文章

随机推荐

  • 从 Lua 调用活动程序中的 C++ 函数

    我不确定我的问题是否有意义 但我当然知道从谷歌获得结果几乎是不可能的 首先 我做什么not想 我不想调用一些打印 hello world 或将两个数字相加的函数 我想从 C 程序加载 Lua 脚本 但允许脚本使用函数修改 C 程序的变量 例
  • Linux 终端中的文件 Glob 模式

    我想搜索可能包含的文件名kavi or kabhi 我在终端写了命令 ls l ka vbh i Between ka and i可能有v or bh 我写的代码不正确 正确的命令是什么 一个很好的方法是使用扩展的 glob 使用它们 您可
  • 一般套接字问题 - 将 C++ 结构从 Java 传输到 C++

    我有一个常见的套接字编程问题要问你 我有一个名为 Data 的 C 结构体 struct data double speed double length char carName 32 struct Attribs struct Attri
  • CGContext.init() -- 不再允许 NULL 颜色空间

    TL DR 在旧版 Obj C 代码中 颜色空间参数值为NULL 这在 Swift 等价物中是不允许的 使用什么价值 我继承的代码如下 unsigned char pixel 1 0 CGContextRef context CGBitma
  • 如何让 PHP 类构造函数调用其父类的父类构造函数?

    我需要 PHP 中的类构造函数调用其父类的构造函数parent s 祖父母 构造函数而不调用父构造函数 main class that everything inherits class Grandpa public function co
  • 将焦点设置在 WPF 中 ControlTemplate 内的控件上

    在我正在开发的应用程序中 我们有一堆自定义控件 其 ControlTemplates 在 Generic xaml 中定义 例如 我们的自定义文本框看起来类似于
  • Selenium 为什么将 firefox 驱动程序的acceptuntrustedcertificates 设置为 true 不起作用?

    我正在开发一些硒测试 我面临一个重要问题 因为当我使用安全连接测试我的网站时 我没有找到 真正的 解决方案 HTTPS 我在 stackoverflow 上找到的所有解决方案都已过时或不起作用 我正在 Firefox 中编写 Seleniu
  • 成功登录后 django admin 重定向

    我正在使用 Django 1 6 1 目前在我的项目中 成功管理登录后 管理系统将我带到管理仪表板 即 localhost 8000 admin 从这里我可以访问我的大部分应用程序 如用户 类别 组等 90 的时间我想访问用户管理页面 即
  • 针对 strcpy 但不针对 memcpy 的 C4996(函数不安全)警告

    我正在 VS2010 中编写代码 我碰巧在编译后看到编译器对 strcpy 和 sprintf 调用发出 C4996 警告 此函数或变量可能不安全 但是 我无法获得 memcpy 的类似警告 并且代码中可能还有一些类似的 不安全 函数调用
  • EC2微实例上的ubuntu在内存不足时自动重启Mysql

    当系统内存不足时 ubuntu 12 04会杀死mysql进程 Out of memory Kill process 17074 mysqld score 146 or sacrifice child 所以该进程最终被杀死 这种情况发生在服
  • 将路由组织到单独的文件中,在 Slim 中无法正常工作

    这是我的索引 php file use Psr Http Message ServerRequestInterface as Request use Psr Http Message ResponseInterface as Respons
  • 用ggplot中的函数定义的两条线之间的阴影区域[重复]

    这个问题在这里已经有答案了 我试图找到如何对 ggplot 中由函数定义的两条线之间的区域进行着色的可能性 我找到了一些使用 geom area 或 geom ribbon 的解决方案 但在这两种情况下 您都需要一个定义 ymin 和 ym
  • Google 地图动画相机位置 iOS 7 问题

    我正在尝试将 Google Maps API 安装到 iOS7 的应用程序中 在遵循 Google 的指南和视频后 我最终遇到了以下错误 GMSMapView animateToCameraPosition unrecognized sel
  • 如何在 Eclipse 中将控制台参数传递给应用程序?

    我在批处理文件中有以下行 java Client 127 0 0 1 9876 它包含我的 java 类的名称和两个参数 我的应用程序需要这些参数才能正常运行 在 Eclipse 中运行应用程序时有什么方法可以传递这些参数吗 这将使调试变得
  • 如何最好地控制迭代方向?

    我有一个装有大型对象的容器 复制这些对象的成本很高 我有时必须正常迭代整个容器 有时则必须反向迭代 一旦确定了迭代方向 我就不需要在飞行中更改 即不需要随机访问 我希望做这样的事情 include
  • Application_Start 未在 IIS 中触发

    在我的网络应用程序中 我在Global asax 中的 APPLICATION START 文件 当我在开发服务器上运行它时它一直在工作 然而 当我在 IIS 中托管它时 Application Start 事件未触发 任何人都可以帮我摆脱
  • 如何确定矩形何时重叠或相交?

    我找到了如何绘制矩形和一些代码来查找两个矩形何时重叠 但我无法连接这些过程 我有我想要的两个矩形 但无法确定它们是否相交 然后将此信息添加到列表框 这是我的代码 public partial class Form1 Form Graphic
  • 交替行颜色ListView xamarin表单

    我在 ListView 上绑定了一个 ObersvableCollection 我想改变我的 ListView 的行颜色 我找到了很多代码 但对我不起作用 如果你可以分享一个示例 样本 像这样 但我不知道我该怎么做 我使用 Visual S
  • R 中的历史方差误差分解图

    我在下面的链接中找到了如何估计 R 中 VAR 模型的历史方差分解 历史方差误差分解 Daniel Ryback Daniel Ryback 在 Excel 绘图中显示了结果 但我想用 ggplot 来准备它 所以我创建了一些行来获取它 尽
  • 打印给定元素排列的程序[关闭]

    Closed 这个问题需要多问focused 目前不接受答案 我最近参加了 ACM 认证的编程竞赛 这是我当时做不到的问题 给定一个包含 n 个元素的整数数组 编写一个程序来打印所有排列 请告诉我这道题该怎么做 有什么算法可以做这类题吗 假