我想使用C ++实现并行前缀和算法。我的程序应采用输入数组x[1....N],并应在数组中显示输出y[N]。(请注意,N的最大值为1000。)
x[1....N]
y[N]
到目前为止,我浏览了许多研究论文,甚至浏览了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个元素。