小编fli*_*ght的帖子

freopen()等效于c ++流

使用c-style i/o进行编程时,我有时会使用freopen()重新打开stdin进行测试,这样我就不必重复输入输入.我想知道是否有相当于c ++的i/o流.此外,我知道我可以使用管道在命令行/终端/任何炎症上重定向它但我想知道是否有办法在我的代码中执行它(因为你可以看到,我不是很了解CL/T/W).

c c++ io

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

采访中的动态规划算法

我在一次采访中向我询问了这个问题,并且令人尴尬地暴露了我在动态编程方面的缺点.如果有人可以帮我解决这个问题,我将不胜感激.此外,如果您能够在设计解决方案时解释您的思维过程对我(以及其他人)非常有帮助,因为当我看到一个使用动态编程范例的解决方案但我很难理解时,我似乎能够理解跟我一起.

不用多说,这是我被问到的问题.

给定一个整数i,并设置Xkx1,x2,... xk上实线,选择i从设定点X,以尽量减少对距离的每一个点的总和X到一个点在i使用动态规划.

algorithm dynamic-programming

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

预期的反转次数 - 从Cormen的算法简介

设A [1 .. n]是n distinct个数的数组.如果i <j且A [i]> A [j],那么对(i,j)被称为A的反转.(有关反演的更多信息,请参阅问题2-4.)假设选择A的每个元素从1到n的范围内随机,独立地和均匀地.使用指标随机变量来计算预期的反转次数.


问题来自Cormen的算法导论中的练习5.2-5 .这是我的递归解决方案:

假设x(i)是[1..i]中的反转次数,而E(i)是x(i)的期望值,那么E(i + 1)可以如下计算:
我们有的图像i+1如果我们将i + 1置于第一个位置,则放置所有数字的位置,然后x(i + 1)= i + x(i); 如果我们将i + 1放在第二个位置,那么x(i + 1)= i-1 + x(i),...,所以E(i + 1)= 1 /(i + 1)*sum( k)+ E(i),其中k = [0,i].最后我们得到E(i + 1)= i/2 + E(i).
因为我们知道E(2)= 0.5,所以递归得到:E(n)=(n-1 + n-2 + ... + 2)/ 2 + 0.5 = n*(n-1)/ 4 .


虽然上面的推论似乎是正确的,但我仍然不太确定.所以我在这里分享.

如果有问题,请纠正我.

algorithm

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

c ++函数模板专业化

鉴于此代码:

class X
{
public:
    template< typename T >
    void func( const T & v );
};

template<>
void X::func< int >( const int & v )
{
}

template<>
void X::func< char * >( const char * & v )       // 16
{
}
Run Code Online (Sandbox Code Playgroud)

当我编译它时,我得到以下错误.

test.cpp:16: error: template-id 'func<char*>' for 'void X::func(const char*&)' does not match any template declaration
Run Code Online (Sandbox Code Playgroud)

任何人都可以对此有所了解吗?

c++ templates template-specialization

9
推荐指数
2
解决办法
270
查看次数

默认构造函数C++错误

我需要关于班级建设的帮助.在我的课程中,我使用了复制构造函数和operator =来阻止编译器创建它们.在我的主程序中,当我尝试创建类的实例时,我收到一条错误,上面写着"该类没有默认的构造函数".

可能是什么问题呢?

这是我的代码片段.

class netlist {
    netlist(const netlist &);
    netlist &operator=(const netlist &);
    std::map<std::string, net *> nets_;
}; // class netlist
Run Code Online (Sandbox Code Playgroud)

在我使用的主要功能中:

netlist nl;
Run Code Online (Sandbox Code Playgroud)

这是我得到错误的地方.我提供了复制构造函数声明,所以它们应该不是问题.

我很感激任何帮助.提前致谢.

c++ constructor

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

为什么cin.getline()跳过每一行的第一个单词?

我试图逐行显示命令行输入文本文件的文本.但由于某种原因,它会在第一行之后跳过每行中的第一个单词.

码:

using std::cout;  
using std::cin;  
using std::endl;  

int main (int args, char* argv[])  
{   
 char x[100];  
 char y[100];  
 char z[100];  
 cin.getline(x,100) >> argv[2];  
 cin.getline(y,100) >> argv[2];  
 cin.getline(z,100) >> argv[2];  
 cout << x <<endl;  
 cout << y <<endl;  
 cout << z <<endl;  
 return 1;  
}  
Run Code Online (Sandbox Code Playgroud)

运行./a.out <moby.txt显示:

CHAPTER 1. Loomings. 

me Ishmael. Some years ago--never mind how long precisely--having  
or no money in my purse, and nothing particular to interest me on
Run Code Online (Sandbox Code Playgroud)

但是moby.txt中的前三行是这样的:

CHAPTER 1. Loomings.

Call me Ishmael. Some …
Run Code Online (Sandbox Code Playgroud)

c++ cin

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

当常数未知时,在O(n)和O(n ^ 2)之间选择正确的算法

我已经为两个算法提供了解决相同问题的运行时函数.让我们说 -

对于第一算法:( T(n) = an + b在n中线性)
对于第二算法:( T(n) = xn^2 + yn + z在n中的二次)

每本书都说线性时间比二次更好,当然它更大n(多大?).我觉得基于常量a,bx,y和大变化的定义z.

你能不能让我知道如何找到n我们应该从algo2切换到algo1的门槛,反之亦然(是否只能通过实验找到?).如果有人能解释如何在专业软件开发组织中完成,我将不胜感激.

我希望我能解释一下我的问题,如果没有,请告诉我.

在此先感谢您的帮助.

PS - 实现将使用Java,并且预计将在各种平台上运行.我觉得非常难估计常数a,b,x,yz数学.我们如何解决专业软件开发中的这种困境?

java algorithm

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