- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在尝试一个示例程序来了解上一个和下一个排列之间的区别。但是,我的程序似乎无法正常运行。我通过询问数组中元素的数量来启动程序,然后使用简单的 for 循环构建数组
for(i = 0; i < x; i++)
ptr[i] = i;
cout << "Possible permuations using prev_permutation: " << endl;
do{
for(i = 0; i < x; i++)
cout << ptr[i] << " ";
cout << endl;
} while(prev_permutation(ptr, ptr+x));
cout << "Possible permuations using next_permutation: " << endl;
do{
for(i = 0; i < x; i++)
cout << ptr[i] << " ";
cout << endl;
} while(next_permutation(ptr, ptr+x));
当我使用包含 3 个元素 (0, 1, 2) 的样本运行代码时。 prev_permutation 给了我 (0, 1, 2 and that's it)。然后 next_permutation 给我 (2, 1, 0)。但是,当我注释 prev_permutation 部分的代码时,当只有 next_permutation 运行时,我得到了集合 (0, 1, 2) 的 6 种不同排列。我似乎无法理解发生了什么。
最佳答案
prev_permutation
和 next_permutation
按字典顺序(“字母顺序”)生成所有排列,它们返回 false
一旦循环完成(即如果在第一个排列上调用 prev_permutation
之后或在最后一个排列上调用 next_permutation
之后)。
发生的事情是,您准备了按字典顺序排列的第一个排列的数组,然后调用 prev_permutation
.然而这是第一次,所以prev_permutation
将数组设置为最后一个排列并返回 false
, 所以你退出循环。
现在您输入 next_permutation
循环,但数组的当前内容是字典顺序的最后一个排列,所以 next_permutation
将设置第一个并返回 false。
如果删除 prev_permutation
然而,部分是 next_permutation
的循环将从第一个开始,因此它将在返回之前正确生成所有 6 个排列 false
.
考虑到按顺序列出的所有排列并将当前配置作为此列表中的指针,您可以想象效果:
0-1-2 << you start here
0-2-1
1-0-2
1-2-0
2-0-1
2-1-0
打电话时 next_permutation
调用prev_permutation
时,你正在向下移动你在向上移动。当超出列表时,两个函数都会将指针移动到另一端并返回 false
通知您这个事实。
如果您以 prev
开头你移动到2-1-0
函数返回 false
, 然后你打电话 next
函数移动到0-1-2
并返回 false
再次。
例如使用 0
代替, 1
和 2
两个零和三个一的排列字典顺序是:
0-0-1-1-1
0-1-0-1-1
0-1-1-0-1
0-1-1-1-0
1-0-0-1-1
1-0-1-0-1
1-0-1-1-0
1-1-0-0-1
1-1-0-1-0
1-1-1-0-0
因此,要枚举所有这些,您需要从 0-0-1-1-1
开始并使用 next_permutation
或者你需要从1-1-1-0-0
开始并使用 prev_permutation
.
在这种情况下调用 next_permutation
在最后一个1-1-1-0-0
会改成第一个0-0-1-1-1
并将返回 false
;以类似的方式调用 prev_permutation
在 0-0-1-1-1
将更改为 1-1-1-0-0
并将返回 false
因为翻转。
关于c++ - Prev_permutation 与 Next_permutation 难度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12230763/
对于我试图为 Oracle SQL 数据库编写的查询,我只是试图从 CI 表中获取所有由某人/某物拥有的行,这些行未列在 sys_user 表中,但返回的结果是由手动检查以下查询实际上在 sys_us
有人可以解密以下内容吗? const connection = (closure) => { return mongoClient.connect(connectionString,(err,
这里是 iOS 开发新手。我的数组有问题。我正在使用 iCarousel 制作应用程序。每当它停止到一个 View 时,它将删除当前 View 或索引,如下所示: NSInteger inde
//RootViewViewController.h #import #import "SettingsViewController.h" #import "OneSlotViewControlle
我正在构建一个游戏,玩家可以在游戏板上拖动一 block 棋子。我想知道那 block 下面的所有节点是什么,但我得到了奇怪的结果。这是 touchesMoves 函数: override f
如果你想看看我有问题的代码,这里是链接: Code 我的问题与我的 past question 有关. 我的 NSMutableArray 真的有问题, 我目前正在使用 iCarousel我的 slo
我需要将联合对象类型(可能有嵌套联合)转换为 可选值的深度交集 类型。基本上所有可能的字段都将相交,并且仅当它存在于联合的一侧时才是可选的 - 并对所有嵌套对象执行此操作。 注意:这不是一个简单的并集
我目前正在开发一个允许直接连接到某些社交网络的程序。这是代码: browser = webdriver.Firefox(executable_path = '/usr/local/bin/geckod
我使用 CakePHP 2.0 作为我网站的框架,我在 CSS 方面遇到了一些困难。基本上出了什么问题是我在 default.ctp 页面上定义了我的 CSS 文件。它在这个页面上工作,但是如果我导航
我正在尝试创建一个 NSTimer 以便我可以将 UIImageView 向下移动但是NSTImer 有困难,先说这个。 var timer = NSTimer.scheduledTimerWithT
我使用 RecaptchaControl ,并且用户提示图像不是那么清晰(验证码中的黑色部分太难阅读)。是否有任何属性可以使图像变得不那么困难(噪音更小)? 最佳答案 简单来说,不是。 正如其他人
我想把几个jpg文件转换成png文件。据我所知,可以使用这个命令 mogrify -format png *.* 我有一个问题,我有很多子文件夹。假设 a 是我的主文件夹,b,c 和 d 是子文件夹。
我正在编写一个带有动态相关选择的简单表单。有两个文件。一个是一个 php 文件,里面有 html、javascript 和 php,第二个是一个 php 文件,用于获取第二次选择的数据并以 json
我正在丢失重音字符。 我从 PHP 下载一个使用 UTF8 的 xml 文件,而我的 PHP 脚本使用 Latin1。我无法将 UTF8 转换为 Latin1。 我已经尝试过这个: $meta=mb_
我在从 json 结果填充 TableView 时遇到困难。我的代码如下(抱歉,但它似乎不想将前两行作为代码:/): 导入 UIKit ViewController 类:UIViewControlle
在母版页中我有以下代码: @ViewBag.Title @RenderBody() 然后在 Index.csh
我想顺序绘制一系列 x,y 坐标,同时清楚地标记指定的坐标。似乎“markevery”允许用户在 matplotlib 图中执行此操作,但是,当我在动画中提供此属性时,我收到错误“ValueError
我正在尝试一个示例程序来了解上一个和下一个排列之间的区别。但是,我的程序似乎无法正常运行。我通过询问数组中元素的数量来启动程序,然后使用简单的 for 循环构建数组 for(i = 0; i < x;
使用 Flex 和 Bison,我有一个 boolean 查询语言的语法规范,它支持逻辑“与”、“或”和“非”操作,以及使用“()”的嵌套子表达式。 一切都很好,直到我注意到诸如“A 和 B 或 C
用例:第 3 方应用程序想要以编程方式监视另一个程序生成的文本文件。文本文件包含您要在更新时分析的数据。 我发现围绕 FileSystemWatcher 这个问题有很多答案,但假设您正在为 Windo
我是一名优秀的程序员,十分优秀!