C++ 查找算法类
我有作业要做,找到/创建解决这个问题的算法:C++ 查找算法类,c++,algorithm,C++,Algorithm,我有作业要做,找到/创建解决这个问题的算法: n-桶数 k-不同颜色块的数量 p_i-铲斗编号i的容量 c_i-颜色为i的块数 假设铲斗位于圆的圆周上 要做什么: 每个桶最多只能有一块颜色。基本操作是将挡块转移到相邻铲斗 我不希望这个问题得到解决,现在我想知道这是哪一类问题-图还是其他什么 非常感谢 编辑:我必须用C++编写.< /P> 编辑:问题示例 1铲斗容量5:1黄色2绿色 2铲斗容量5:1白色2黄色 3铲斗容量2:2蓝色 4铲斗容量7:1绿色 算法必须使每个桶最多包含一个颜色块
-桶数n
-不同颜色块的数量k
-铲斗编号i的容量p_i
-颜色为i的块数c_i
每个桶最多只能有一块颜色。基本操作是将挡块转移到相邻铲斗 我不希望这个问题得到解决,现在我想知道这是哪一类问题-图还是其他什么 非常感谢 编辑:我必须用C++编写.< /P> 编辑:问题示例
- 1铲斗容量5:1黄色2绿色
- 2铲斗容量5:1白色2黄色
- 3铲斗容量2:2蓝色
- 4铲斗容量7:1绿色
我正在考虑在搜索树中生成正确放置块的所有可能性,但我不确定如何计算此解决方案中的步骤。另一个想法是“清扫”不应该在里面的每个桶块。最后一个想法是从块透视图和“扫描”桶的角度看问题,其中包括每种颜色的多个块。但是我找不到任何强有力的办法来解决这个问题 编辑:我的算法
乍一看,我建议使用数据结构。但是如果不知道你要用什么语言写,我想没有人能进一步帮助你 例如,您可以创建一个
双链接列表
,并用类型为myObject
的成员填充它
在Java中,myObject
将是一个类
。在C语言中,myObject
将是一个Struct
,等等
您希望链接这些对象,以便每个对象都有对其两个相邻对象的引用。然后,您可以将一个块传递给“邻居”(链接的)存储桶
虽然您如何创建数据结构在很大程度上取决于语言
编辑:在一个简单的情况下,您可以创建对象的
数组
(Java类
、C结构
,等等),然后使用n-1
(左)和n+1
(右)给邻居块,其中n
是数组中的当前存储桶。什么问题?该算法应该做什么?到目前为止您尝试了什么?你认为答案会是什么?请给我们展示更多的努力。在给你这个作业之前,你的讲师没有给你任何关于算法的信息?我在考虑搜索树,在那里我将生成所有正确放置块的可能性,但我不确定如何计算这个解决方案中的步骤。另一个想法是“清扫”不应该在里面的每个桶块。最后一个想法是从块透视图和“扫描”桶的角度看问题,其中包括每种颜色的多个块。但是我找不到任何强有力的方法来解决这个问题。你能选择哪个相邻的bucket,或者所有的传输都必须在同一个方向吗?在这种情况下,双链表比简单数组有什么优势?我们得到了n
,因此我们的数据结构具有固定的大小。您可以创建一个n
对象的数组(如Java类或C-结构
)。双链接列表的设计要复杂一些,但根据我的经验,它提供了更多的功能。这完全取决于你需要什么。但是,考虑到您的需要,数组
可能更适合您。在这种情况下,您可以创建对象的数组
,然后使用n-1
和n+1
给相邻的块,其中n
是数组中的当前bucket。您可能更喜欢(k+n-1)mod n
和(k+1)mod n
(假设k
是当前缓冲区)确保第n个n
之后的下一个元素将是第一个,而第一个元素之前的元素将是第n个n
。