Tag: 算法

寻找幸运数字的算法

我遇到了这个问题。如果数字的总和,以及数字的平方和是素数,则称为幸运数字。 A和B之间的幸运数字是多少? 1 <= A <= B <= 10 18 。 我试过这个。 首先,我生成了1之间的所有可能素数和可以通过求和平方得到的数字(81 * 18 = 1458)。 我在A和B中读取了通过对数字求和可以生成的最大数量。如果B是2位数字(最大数字是由99生成的18)。 对于1和最大数之间的每个素数。 我应用了整数分区算法。 对于每个可能的分区,我检查了它们的数字的平方和是否形成素数。 如果是这样,则生成该分区的可能排列,如果它们位于范围内,则它们是幸运数字。 这是实施: #include #include #include #include #include long long luckynumbers; int primelist[1500]; int checklucky(long long possible,long long a,long long b){ int prime =0; while(possible>0){ prime+=pow((possible%10),(float)2); possible/=10; } if(primelist[prime]) return 1; else return 0; } […]

查找包含另一个字符串中字符串的所有字符的最小窗口的长度

最近我接受了采访。 我做得不好因为我遇到了以下问题 假设给出了一个序列:ADCBDABCDACD和搜索序列如下:ACD 任务是在给定字符串中查找包含保留顺序的搜索字符串的所有字符的开始和结束索引。 输出 :假设索引从1开始: 开始索引10结束索引12 解释 : 1.start / end index分别不是1/3,因为虽然它们包含字符串但是没有维护订单 2.start / end index分别不是1/5,因为它们虽然包含顺序的字符串,但长度不是最佳的 3.start / end index分别不是6/9,因为它们虽然包含顺序中的字符串但长度不是最佳的 请详细说明如何查找包含给定字符串中所有字符的最小子字符串? 。 但由于订单未得到维护,上述问题不同。 我仍在努力维持索引。 任何帮助,将不胜感激 。 谢谢

确定字符串是否包含所有唯一字符?

任何人都可以告诉我如何实现一个程序来检查包含所有唯一字符的字符串?

四连胜逻辑

我现在正在为自己开发一个基本的四连胜游戏,但我更倾向于坚持它背后的逻辑。 目前我有这个代表电路板的多维数组 [ [0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0] ] 0表示空插槽,而1和2表示播放器。 那么让我们说一段时间后你得到这个数组: [ [0, 0, 0, 0, 0, 0, […]

如何在C中连接两个数组?

如何连接两个数组以获得包含两个原始数组元素的单个数组?

在C中创建n个项目的k和m组合的所有可能子集

我正在为我的问题寻找解决方案:我必须编写一个代码来计算独特元素的组合,即n个元素的所有不同组合被选为k元素组并重新计算剩余子集的新组合而不复制。 给定S,所有可能的唯一元素的集合,我必须计算S的元素的唯一组合的子集T,现在我必须重新计算新的子集 – V – T的组合并且所有子集T和V必须是独特: For example I have this set S: {0, 1, 2, 3, 4} 我必须得到 a {0, 1} {2, 3} { 4} b {0, 1} {2, 4} { 3} c {0, 1} {3, 4} { 2} d {0, 2} {1, 3} { 4} e {0, 2} {1, 4} { 3} f […]

生成子序列

我有一个像“0189”这样的字符串,我需要生成所有子序列,但必须保留各个字符的顺序,即这里9不应该在0,1或8之前。例如:0,018,01 ,09,0189,18,19,019等 另一个例子是“10292”,子序列将是:1,10,202,02,09,29,92等。你可能已经注意到’02’两次,因为’2’在给定的字符串中出现两次。 但是,21,11,91之类的东西也是无效的,因为要维持秩序。 任何算法或伪代码,可以用C / C ++实现,将不胜感激!

优化浮点除法和转换操​​作

我有以下公式 float mean = (r+b+g)/3/255.0f; 我想加快速度。 有以下先决条件 0<= mean <= 1 and 0 <= r,g,b <= 255 and r, g, b are unsigned chars 所以,如果我尝试使用>> 8就像除以256的事实,我会使用类似的东西 float mean = (float)(((r+b+g)/3) >> 8); 这将永远返回0.有没有办法跳过昂贵的浮动分区,最终仍然是0到1之间的平均值?

使用C 从数组中删除重复项

我想在C中的数组概念中进行小的澄清。我有数组: int a[11]={1,2,3,4,5,11,11,11,11,16,16}; 我想要这样的结果: {1,2,3,4,5,11,16} 意味着我想要删除重复项。 这怎么可能?

可以扩展二次方的C程序

我想有一个C程序,允许我输入(x + 1)(x + 3)和其他类似的东西,包括x ^ 2。 到目前为止,我有一个使用链表的非常复杂的系统,但我认为应该有一个更简单的解决方案。 输入的输出,(x + 1)(x + 3)将打印出x ^ 2 + 4x + 3。 到目前为止,我传递的是一个带有int,char和int的struct _term,用于系数,数字和幂。 所以2x ^ 4将被保存为| 2 |’x’| 3 |。 我还要提到我只有16岁,还在高中。