- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我试着想出一种算法,但做不到。这是问题所在:
共有 16 个元素,按四种类型(a、b、c 和 d)分组。我们也有四个组,A、B、C 和 D。
在初始状态下,四组各有四个随机元素,eg.:
A: c, c, a, d
B: b, b, a, a
C: b, b, c, c
D: d, d, d, a
组中元素的顺序很重要。
允许两种操作:
1) 旋转组的元素(双向),例如:
c, c, a, d -> d, c, c, a
2) 将一个组中的两个相邻元素与相邻组中的相应元素交换,考虑到第一个和最后一个组和元素也是相邻的,所以。:
A: (c, c), a, d
B: (b, b), a, a
->
A: (b, b), a, d
B: (c, c), a, a
或
A: c), c, a, (d
D: d), d, d, (a
->
A: d), c, a, (a
D: c), d, d, (d
该算法的目标是将元素放入相应的组(A: a, a, a, a
等)。该算法在时间和解决方案方面不一定是最优的,但平均而言它应该相当快(即没有蛮力)。
有人可以帮忙吗?这个算法是多项式的吗?
最佳答案
我认为这总是可能的。首先考虑一个字母(比如b)只出现在X和Y两行的情况。我们可以通过交换操作确保X和Y相邻。
情况一)
X: b - - -
Y: - b b b
我们可以通过以下方式使 X 都是 b
循环移位 X。
X: - - b -
Y: - b b b
交换中间
X: - b b -
Y: - - b b
现在循环移位和交换。
情况二)
X: b - b -
Y: b - b -
成功了
X: - b - b
Y: b - b -
交换最后两个。
另一种情况是微不足道的。
现在给定一个特定字母在 2、3 或 4 行中的任何分布,我们可以确保它只出现在两行中。我会把它留给你,因为它很容易看,但很难打字!
(如果它只出现在一行中,那么我们的工作大部分都针对该字母完成了)
因此算法将是
确保 a 只出现在两行中。确保行是 A 和 B(稍后交换)。
现在执行上面的操作使A成为aaaa。
忽略 A。
考虑 B、C、D。确保 b 仅出现在两行中。如上使B为bbbb。
忽略 B。
给定 C 和 D,您可以使用上面的方法使 C 成为 cccc,D 成为 dddd。
关于algorithm - 使用旋转和交换对二维环形阵列进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3448668/
我正在尝试从网站(名称)“抓取”一些数据。我知道如何获得列表中的第一个名字——但我需要以同样的方式保存几千个名字。 这是我的代码: library(rvest) library(tidyverse)
我正在尝试制作一个环形 UIBezierPath 用作 CAShapeLayer 的 path 以下产生一个循环路径: let radius = 100.0 let circularPath = UI
如何在 1 分钟后停止 setTimeout。由于循环,它继续运行。TIA var image1 = new Image() image1.src = "images/slide1.jpg"
我现在这个问题发布了更多次,但我还没有解决我的问题。在我的例子中,foregroundColor 不工作。即使 foregroundColor 没有选择任何颜色,环也不会出现 darkGray 颜色。
public class Tester { // instance variables - replace the example below with your own Scanne
来自澳大利亚的投票问题: 一个机器人会不断地输入信息,它可以达到 1000 行。他将输入的内容示例: "1 2 3 2 1 3 2 3 1 1 2 3 3 1 2 " 我怎么知道他什么时候输入完信息?
有人可以启发如何进行这项工作吗?所以现在我有一个 do/while 循环,里面有一个开关。开关由一个 int 选择处理,scanf 是“%d”。但是,如果我写一个不同于数字的字符符号,如 a、b、c.
我是一名优秀的程序员,十分优秀!