并行前缀总和-最快的实现

我想使用C ++实现并行前缀和算法。我的程序应采用输入数组x[1....N],并应在数组中显示输出y[N]。(请注意,N的最大值为1000。)

到目前为止,我浏览了许多研究论文,甚至浏览了Wikipedia中的算法。但是我的程序还应该显示输出,步骤以及每个步骤的操作/指令。

我想要最快的实现,就像我想要最小化操作数量和步骤一样。

例如::

x = {1, 2, 3,  4,   5,   6,   7,  8 } - Input

y = ( 1, 3, 6, 10, 15, 21, 28, 36) - Output

但是,除了将y数组显示为输出之外,我的程序还应该显示每个步骤的操作。我还引用此线程计算前缀和,但可以从中获得很多帮助。

回答:

遵循以下代码即可完成工作

void prfxSum()

{

int *x=0;

int *y=0;

int sum=0;

int num=0;

int i=0;

cout << "Enter the no. of elements in input array : ";

cin >> num;

x = new int[num];

y = new int[num];

while(i < num)

{

cout << "Enter element " << i+1 << " : ";

cin >> x[i++];

}

cout << "Output array :- " << endl;

i = 0;

while(i < num)

{

sum += x[i];

y[i] = sum;

cout << y[i++] << ", ";

}

delete [] x;

delete [] y;

}

以下是执行时的输出

Enter the no. of elements in input array : 8

Enter element 1 : 1

Enter element 2 : 2

Enter element 3 : 3

Enter element 4 : 4

Enter element 5 : 5

Enter element 6 : 6

Enter element 7 : 7

Enter element 8 : 8

Output array :-

1, 3, 6, 10, 15, 21, 28, 36

您可以通过从文件等中输入数组x []来避免用户输入1000个元素。

以上是 并行前缀总和-最快的实现 的全部内容, 来源链接: utcz.com/qa/412077.html

回到顶部