-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathwork2way2.cpp
More file actions
39 lines (38 loc) · 758 Bytes
/
work2way2.cpp
File metadata and controls
39 lines (38 loc) · 758 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#include<iostream>
#include<math.h>
using namespace std;
int main() {
//初始化
int count = 5;//循环次数
int m = 15;
int n = pow(2, m);//问题规模
int* arr = new int[n];//待累加的数
while (count > 0) {
int sum = 0;//累加结果
//优化算法之双路
int sum1 = 0;
int sum2 = 0;
//循环展开,一步循环包含四步操作
for (int i = 0;i < n;i += 8) {
arr[i] = i;
arr[i + 1] = i + 1;
sum1 += arr[i];
sum2 += arr[i + 1];
arr[i + 2] = i + 2;
arr[i + 3] = i + 3;
sum1 += arr[i + 2];
sum2 += arr[i + 3];
arr[i + 4] = i + 4;
arr[i + 5] = i + 5;
sum1 += arr[i + 4];
sum2 += arr[i + 5];
arr[i + 6] = i + 6;
arr[i + 7] = i + 7;
sum1 += arr[i + 6];
sum2 += arr[i + 7];
}
sum = sum1 + sum2;
count--;
}
return 0;
}