Tag: 算法

如何仅使用堆栈操作对堆栈进行排序?

我在网上发现了这个问题。 给定堆栈S,编写C程序以对堆栈进行排序(按升序排列)。 我们不允许对堆栈的实现方式做任何假设。 唯一要使用的function是: Push Pop Top IsEmpty IsFull 我想我们可以构建堆并对其进行排序。 什么是最佳解决方案?

从输入数字中删除k个数字后如何获得最少的数字

例如,如果输入的数字是24635 ,则在删除任何3位数后,最小数字是23 。 它与取两个最小的数字不同,因为必须保持数字的顺序。

从集合中生成大小为k的所有子集

我想从一组中生成大小为k的所有子集。 例如:-say我有一组6个元素,我必须列出元素基数为3的所有子集。 我试图寻找解决方案,但那些是代码片段。 它早就完成了编码,所以我发现很难理解代码并构建一个可执行程序。 C或C ++中的完整可执行程序将非常有用。 希望使用递归的最佳解决方案。

C lower_bound的实现

基于此处的以下定义 返回指向排序范围[first,last]中第一个元素的迭代器,它不会比value更小。 使用operator <用于第一个版本或comp用于第二个版本来完成比较。 什么是lower_bound()的C等效实现。 我知道这将是对二进制搜索的修改,但似乎无法确切地指出精确的实现。 int lower_bound(int a[], int lowIndex, int upperIndex, int e); 示例案例: int a[]= {2,2, 2, 7 }; lower_bound(a, 0, 1,2) would return 0 –> upperIndex is one beyond the last inclusive index as is the case with C++ signature. lower_bound(a, 0, 2,1) would return 0. lower_bound(a, 0, 3,6) would return […]

如何计算两个给定日期之间的天数? (闰年障碍)

任何可被400整除的年份都是闰年(例如,2000年是闰年)。 任何可被100整除的其他年份不是闰年(例如,1700,1800和1900不是闰年)。 任何可被4整除的其他年份是闰年(例如,1996年和2004年是闰年)。 但我不知道如何在我的c程序中使用能够产生正确答案的状态嵌套…

所有不相交的对的集合

给定{1,2,3,4,5…n} n元素的{1,2,3,4,5…n}组,我们需要找到所有不相交的对。 例如,如果n = 4,则输出为 {(1,2),(3,4)}, {(1,3),(2,4)}, {(1,4),(2,3)} 我甚至无法弄清楚如何开始。 我希望有人可以给我一个关于使用哪种算法的建议,以及可能的一些实现细节。

特殊的简单随机数发生器

如何创建一个函数,在每次调用时生成一个随机整数? 该数字必须尽可能最随机(根据均匀分布 )。 它只允许使用一个静态变量和最多3个基本步骤,其中每个步骤仅包括arity 1或2的一个基本算术运算。 例: int myrandom(void){ static int x; x = some_step1; x = some_step2; x = some_step3; return x; } 基本算术运算是+, – ,%,而不是xor,或左移,右移,乘法和除法。 当然,不允许使用rand(),random()或类似的东西。

将线段延伸特定距离

我试图找到一种方法将线段延长特定距离。 例如,如果我有一个从10,10开始的线段延伸到20,13并且我想将长度延长3,我该如何计算新端点。 在这个例子10.44中,我可以得到sqrt(a ^ 2 + b ^ 2)的长度,所以如果我想知道10,10的新端点,长度为13.44,那么计算上最快的方法是什么? 我也知道坡度,但不知道在这种情况下这对我有什么帮助。

限制浮点精度?

有没有办法将浮点数舍入为2分? 例如: 3576.7675745342556变为3576.76 。

寻找出租车号码

找到前n出租车编号。 给定值n 。 我想找到前n个出租车编号。 出租车是一个数字,可以用不止一种方式表示为两个完美立方体的总和。 (注意,有两个相关但不同的集合称为’出租车编号’: 2个立方体的总和超过1种方式 , 最小的数字是2个正整数立方体的总和,用n种方式 。这个问题是关于前一组,因为后一组只有前六名成员知道) 例如: 1^3 + 12^3 = 1729 = 9^3 + 10^3 我想粗略概述算法或如何解决问题的C片段。 The first five of these are: IJKL Number ——————————— 1 12 9 10 1729 2 16 9 15 4104 2 24 18 20 13832 10 27 19 24 20683 4 32 18 30 32832