小编vge*_*eta的帖子

寻找幸运数字的算法

我遇到了这个问题.如果数字的总和,以及其数字的平方和是素数,则称为幸运数字.A和B之间的幸运数字是多少?1 <= A <= B <= 10 18.我试过这个.

  • 首先,我生成了1之间所有可能的素数和可以通过求和平方得到的数字(81*18 = 1458).

  • 我在A和B中读到了通过对数字求和可以产生的最大数量.如果B是2位数字(最大数字是由99生成的18).

  • 对于1和最大数之间的每个素数.我应用了整数分区算法.

  • 对于每个可能的分区,我检查了它们的数字的平方和是否形成素数.如果是这样,则生成该分区的可能排列,如果它们位于范围内,则它们是幸运数字.

这是实施:

#include<stdio.h>
#include<malloc.h>
#include<math.h>
#include <stdlib.h>
#include<string.h>
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;
}
long long getmax(int numdigits){
        if(numdigits == 0) return 1; 
        long long maxnum =10;
             while(numdigits>1){
                        maxnum = maxnum *10;
                        numdigits-=1;
             }
         return maxnum; 

}
void permuteandcheck(char *topermute,int d,long long a,long long b,int …
Run Code Online (Sandbox Code Playgroud)

c algorithm primes

27
推荐指数
2
解决办法
2万
查看次数

用于找到阵列中元素的最大总和的算法,使得不超过k个元素是相邻的

我遇到了这个问题.给定一个仅包含正值的数组,您希望在约束条件下最大化所选元素的总和,使得多于k个选定元素的组不相邻.例如,如果输入是1 2 3 1 7 9(n = 6且k = 2).输出将是21,它来自挑选元素_ 2 3 _ 7 9.我的简单DP解决方案就是这个

#include<stdio.h>
#include<limits.h>
#include<malloc.h>


long maxsum(int n,int k,long *sums){
    long *maxsums;
    maxsums = malloc(sizeof(long)*n);
    int i;
    long add  = 0;
    for(i=n-1;i>=n-k;i--){
        add += sums[i];
        maxsums[i] = add;
    }

    for(i = n-k-1;i>=0;i--){
        int j;
        long sum =0,max = 0,cur;
        for(j=0;j<=k;j++){
            cur = sum;
            if((i+j+1)<n)
                cur += maxsums[i+j+1];  
            if(cur > max) max = cur;
            sum += sums[i+j];
        }
        maxsums[i] = max;
    }
    return maxsums[0];
}

int main(){
    int …
Run Code Online (Sandbox Code Playgroud)

c algorithm dynamic-programming

8
推荐指数
1
解决办法
2848
查看次数

HTML 5 Ruby on Rails服务器端事件

我是HTML5和Rails的新手.我正在尝试学习服务器端事件以在我的项目中使用它.我有些疑惑.每当数据库中有更新时,我都可以使用SSE发送数据吗?如果可能的话怎么用它.EM可以直接监控数据库吗?
哪一个是最好的基于事件的服务器(杂种/彩虹/瘦/巨人或任何其他)?

感谢您的时间.

html5 ruby-on-rails

5
推荐指数
1
解决办法
2468
查看次数

有向循环图中两个节点之间的路径数


我想在有向图中找到顶点1和顶点n之间的路径数.该图包含循环.如果顶点1和顶点n之间的任何路径都有一个循环,那么结果应该是"INFINITE PATHS",否则就是路径数.这是我试过的.


1)我修改了DFS算法,它从节点1开始,所有节点最初都是白色的.
2)如果访问了灰色节点,则表示存在循环.
3)记录所访问顶点的路径数组用于在循环中回溯节点.
4)对于周期中未修改的每个节点,DFS用于搜索该节点的第n个顶点.
5)如果DFS从任何一个节点成功,那么在顶点1和顶点n之间的路径中存在一个循环,因此它返回,否则算法继续计算路径数.

c ++实现


#include <stdio.h>
#include <malloc.h>
#include <vector>
#include <algorithm>

#define WHITE 0
#define GRAY 1
#define BLACK 2

using namespace std;
typedef struct vertexstruct{
   int color;
   vector<int> edgelist;
}vertex;

int ordinarydfs(int v,vertex *vertices,int numvertices){
    if(v == numvertices){
        return 1;       
    }

    if(vertices[v].color == WHITE){
         vertices[v].color = GRAY;
         for(int i=0;i<vertices[v].edgelist.size();i++){
             int x = ordinarydfs(vertices[v].edgelist[i],vertices,numvertices);
             if(x ==1) return 1;
         }
         vertices[v].color = BLACK; 
     }
     return 0;
}

int checkcycle(int v,vector<int>path,vertex *vertices,int numvertices){
    vector<int>::iterator it;
    vector<int>::iterator …
Run Code Online (Sandbox Code Playgroud)

c++ algorithm

5
推荐指数
1
解决办法
3498
查看次数

导出静态函数

我在 dll-1 的头文件 xh 中定义了一个类,它是


class A{
   public:
   static int val;
__declspec(dllexport) static void setval(int v) {val = v;} 
};
Run Code Online (Sandbox Code Playgroud)

和 x.cpp 有


int A::val = 256;
Run Code Online (Sandbox Code Playgroud)

现在我构建了 dll-1 并且它通过了,但是链接该 dll 的其他 dll 无法构建,并出现错误 unresolved external symbol public: static int A::val。当我在 x.cpp 中定义导出函数时,这个问题得到了解决。但我不明白为什么它坏了。谢谢。

c++ visual-c++

1
推荐指数
1
解决办法
5135
查看次数