小编cry*_*nic的帖子

在给定范围内使用特定数字写入的所有数字的总和

我的目标是找到4到666554之间的所有数字的总和,仅包括4,5,6.

SUM = 4+5+6+44+45+46+54+55+56+64+65+66+.....................+666554.
Run Code Online (Sandbox Code Playgroud)

简单的方法是运行循环并仅添加由4,5和6组成的数字.

long long sum = 0;
for(int i=4;i <=666554;i++){
   /*check if number contains only 4,5 and 6.
     if condition is true then add the number to the sum*/
}
Run Code Online (Sandbox Code Playgroud)

但它似乎效率低下.检查数字是由4,5和6组成需要时间.有没有办法提高效率.我已经尝试了很多,但没有找到新的方法.请帮助.

algorithm math

27
推荐指数
3
解决办法
2493
查看次数

使用body,formals和environment方法修改R中的函数

功能定义

f <- function(x) {
   x + x*x
}
Run Code Online (Sandbox Code Playgroud)

3种方法,即body,formalsenvironment可用于修改

身体

> body(f)
{
    x + x * x
}
Run Code Online (Sandbox Code Playgroud)

如果我们想改变身体使用 body

> body(f) <- expression({x*x*x})
> f
function (x) 
{
    x * x * x
}
Run Code Online (Sandbox Code Playgroud)

看到它改变了.

甲缩醛

如果想使用改变的参数formals(x = 3, y = 6)

> formals(f) <- list(x = 3, y = 4)
> f
function (x = 3, y = 4) 
{
    x * x * x
}
Run Code Online (Sandbox Code Playgroud)

看到它改变了. …

methods arguments r

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

如何通过反转子串来找到按字典顺序排列的最小字符串?

我有一个Sa's和b's 组成的字符串.执行以下操作一次.目的是获得按字典顺序排列的最小字符串.

操作: 正好反转一个子串S

例如

  1. 如果S = abab那么Output = aabb(ba字符串反向S)
  2. 如果S = abba那么Output = aabb(bba字符串反向S)

我的方法

情况1:如果输入字符串的所有字符都相同,则输出将是字符串本身.

案例2:如果S是形式,aaaaaaa....bbbbbb....那么答案S就是它自己.

否则:查找第一次出现bS说的位置是我.字符串S看起来像

aa...bbb...aaaa...bbbb....aaaa....bbbb....aaaaa...
     |
     i   
Run Code Online (Sandbox Code Playgroud)

为了获得按字典顺序排列的最小字符串,将被反转的子字符串从索引i开始.请参阅下面的可能结束j.

aa...bbb...aaaa...bbbb....aaaa....bbbb....aaaaa...
     |           |               |               |
     i           j               j               j
Run Code Online (Sandbox Code Playgroud)

S[i:j]为每个j 反转子字符串并找到最小的字符串.该算法的复杂性将是O(|S|*|S|)其中|S|的字符串的长度.

有没有更好的方法来解决这个问题?可能是O(|S|)解决方案. …

string algorithm lexicographic

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

在data.table的j参数中使用"list"

我正在从博客文章中学习data.table属性.我试图理解"摘要表(简短和窄)"下的部分,首先是将data.frame(mtcars)强制转换为data.table:

> data <- as.data.table(mtcars)

> data <- data[,.(gear,cyl)]
> head(data)
    gear cyl
 1:    4   6
 2:    4   6
 3:    4   4
 4:    3   6
 5:    3   8
 6:    3   6
Run Code Online (Sandbox Code Playgroud)

到目前为止,一切都很好.

现在我试过这个 data[, gearsL := list(list(unique(gear))), by=cyl]

> head(data)
   gear cyl gearsL
1:    4   6  4,3,5
2:    4   6  4,3,5
3:    4   4  4,3,5
4:    3   6  4,3,5
5:    3   8    3,5
6:    3   6  4,3,5
Run Code Online (Sandbox Code Playgroud)

我能够理解唯一(齿轮)但无法理解什么列表(列表(唯一(齿轮))正在做什么.

r data.table

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

不同素数的乘积作为完美平方的总和

给定:k个不同的素数表示a1,a2,.....,ak

目标:将给定素数的乘积写为完美平方之和所需的最小正方形数.

例子:

k = 2, a1 = 3, a2 = 5 a1*a2 = 15 = 9 + 4 + 1 + 1 即总和4个完美的正方形

k = 3, a1 = 2, a2 = 5, a3 = 11 a1*a2*a3 = 110 = 100 + 9 + 1 即总和3个完美的正方形

我的算法

p = a1*a2*...........*ak

counter = 0
while p != 0:
    find the largest perfect square <= p say z
    p = p-z
    counter = counter + 1
return counter
Run Code Online (Sandbox Code Playgroud)

我已经测试了几个例子.对我而言似乎是正确的.但在少数例子的基础上进行概括是不正确的.如何证明这一点(如果算法正确)?

algorithm math primes

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

< - 和<<之间的区别 -

情况1:

rm(list = ls())
foo <- function(x = 6){
  set <- function(){
  x <- x*x}
  set()
x}
foo()
# [1] 6
Run Code Online (Sandbox Code Playgroud)

案例2:

rm(list = ls())
foo <- function(x = 6){
set <- function(){
  x <<- x*x}
  set()
  x}
foo()
# [1] 36
Run Code Online (Sandbox Code Playgroud)

我读到该<<-运算符可用于为与当前环境不同的环境中的对象赋值.它表示<<-可以对不在当前环境中的对象进行对象初始化.我想问一下可以使用哪个环境的对象进行初始化<<-.在我的情况下环境是foo功能环境,可以<<-初始化函数外部的对象或当前环境中的对象吗?完全混淆何时使用<-以及何时使用<<-.

r lexical-scope

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

将Rcpp对象分配到Rcpp列表会产生最后一个元素的重复项

我试图采取一个Rcpp::CharacterMatrix并将每一行转换为自己的元素Rcpp::List.

但是,我编写的函数有一个奇怪的行为,其中列表的每个条目对应于矩阵的最后一行.为什么会这样?这是一些指针相关的概念吗?请解释.

功能:

#include <Rcpp.h>
using namespace Rcpp;

// [[Rcpp::export]]
List char_expand_list(CharacterMatrix A) {
  CharacterVector B(A.ncol());

  List output;

  for(int i=0;i<A.nrow();i++) {
    for(int j=0;j<A.ncol();j++) {
      B[j] = A(i,j);
    }

    output.push_back(B);
  }

  return output;
}
Run Code Online (Sandbox Code Playgroud)

测试矩阵:

这是A传递给上述函数的矩阵.

mat = structure(c("a", "b", "c", "a", "b", "c", "a", "b", "c"), .Dim = c(3L, 3L))
mat
#     [,1] [,2] [,3]
# [1,] "a"  "a"  "a" 
# [2,] "b"  "b"  "b" 
# [3,] "c"  "c"  "c"
Run Code Online (Sandbox Code Playgroud)

输出:

上面的函数应该将此矩阵作为输入并返回矩阵行列表,如下所示:

char_expand_list(mat)
# …
Run Code Online (Sandbox Code Playgroud)

c++ rcpp

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

添加两个正整数给出否定答案.为什么?

#include<iostream>

using namespace std;

int main(){

  int x = 1967513926;
  int y = 1540383426;

  cout<<x+y;

return 0;
}
Run Code Online (Sandbox Code Playgroud)

以上两个整数的和是3507897352 <2 ^ 32.So为什么错误的答案?请帮忙...

c++

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

在arma :: mat中查找唯一的行

在R中,我们可以使用唯一方法来查找唯一行

> data <- matrix(c(1,1,0,1,1,1,0,1),ncol = 2)
> data
     [,1] [,2]
[1,]    1    1
[2,]    1    1
[3,]    0    0
[4,]    1    1

> unique(data)
     [,1] [,2]
[1,]    1    1
[2,]    0    0
Run Code Online (Sandbox Code Playgroud)

我们怎样才能arma::mat在Rcpp中做到这一点?这里唯一函数返回唯一元素而不是唯一行.

r unique armadillo rcpp

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

如何确定Rcpp中存储在SEXP中的对象类?

//[[Rcpp::export]]
int Class_data(SEXP data) {
    /*
       return 0 if class of data is matrix
       else return -1 
    */
}
Run Code Online (Sandbox Code Playgroud)

data在上述情况下如何确定类?如果data属于matrix类返回0,则返回-1.

r class rcpp

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

如何摆脱分段错误?

我的目标是找到(p连续数的最小值)*p的最大值.这里1 <= p <= N并且1 <= N <= 100000并且1 <=数字<= 1000000.I已经部分地解决了问题.但是在某些情况下我得到了这个运行时错误.

"在抛出'std :: bad_alloc'的实例后调用终止what():std :: bad_alloc此应用程序已请求Runtime以不寻常的方式终止它.请联系应用程序的支持团队以获取更多信息."

我发现错误是因为程序试图访问不允许的内存.但我没有得到哪部分代码试图访问未分配的内存.请帮助我.

#include <iostream>

using namespace std;

int main(){
int N=0;
cin>>N;
int **A,*B,i,j,num;
A = new int*[N];
for(i=0;i<N;i++)
    A[i] = new int[N]();
B = new int[N]();

for(i=0;i<N;i++){
    cin>>num;
    A[0][B[0]] = num;
    for(j=0;j<B[0];j++){
        A[j+1][B[j+1]] = min(A[j][B[j+1]],A[j][B[j+1]+1]);
        B[j+1]++;
    }
    B[0]++;
}
long long maxim = 0;
for(i=0;i<N;i++){
   for(j=0;j<B[i];j++){
      if(A[i][j]*(i+1) > maxim)
        maxim = A[i][j]*(i+1);
   }
}

cout<<maxim;
delete []A;
delete []B;
return 0;
}
Run Code Online (Sandbox Code Playgroud)

c++ runtime-error

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