小韦老师@神犇营-my0213-向量点积计算
作者:互联网
小韦老师@神犇营-my0213-向量点积计算
题目:
描述
在线性代数、计算几何中,向量点积是一种十分重要的运算。给定两个 n 维向量 a = (a1, a2, …, an) 和 b = (b1 ,b2, …, bn),求点积 a · b = a1 * b1 + a2 * b2 + … + an * bn。
输入
第一行是一个整数 n(1 ≤ n ≤1000);
第二行包含 n 个整数 a1, a2, …, an;
第三行包含 n 个整数 b1, b2, …, bn;
相邻整数之间用单个空格隔开。每个整数的绝对值都不超过 1000。
输出
一个整数,即两个向量的点积结果。
输入样例1
3
1 4 6
2 1 5
输出样例1
36
题解:
整体思路:
一个向量有几个数就说这向量是几维,例如一个向量有 n 个数,就称这个向
量是 n 维向量。
向量点积运算就是把两个向量对应位置的值相乘,再进行累加即可。
具体步骤:
1.定义两个数组,用来存储两个向量:
const int N = 1e3 + 10; // 定义数组的大小,1e3 是 1000
int a[N], b[N]; // 定义两个一维数组,用来存储向量
2.定义一个变量 n,表示维度(也即一个向量有几个数),并输入 n。
3.输入第一个向量的 n 个数,存储在数组 a 中。
4.输入第二个向量的 n 个数,存储在数组 b 中。
5.定义一个累加器 sum,用来存储当前累加的和。
6.枚举两个向量的每一个位置,将对应位置相乘,再累加到累加器中:
// 枚举 n 维向量的每一个位置,这里通过枚举数组的每一个位置获得
for (int i = 0; i < n; i++) {
// 将 a 向量与 b 向量对应位置的整数相乘,并且累加到累加器中
// 这里是数组对应的位置(下标)
sum += a[i] * b[i];
}
7.输出累加器。
完整代码
#include <bits/stdc++.h>
using namespace std;
const int N = 1e3 + 10; // 定义数组的大小,1e3 是 1000
int a[N], b[N]; // 定义两个一维数组,用来存储向量
int main() {
int n; // 定义 n,表示向量的维度
cin >> n; // 输入 n
for (int i = 0; i < n; i++) { // 输入向量 a 的 n 个整数
cin >> a[i];
}
for (int i = 0; i < n; i++) { // 输入向量 b 的 n 个整数
cin >> b[i];
}
int sum = 0; // 累加器,用来存储当前累加的和,记得初始化为 0
// 枚举 n 维向量的每一个位置,这里通过枚举数组的每一个位置获得
for (int i = 0; i < n; i++) {
// 将 a 向量与 b 向量对应位置的整数相乘,并且累加到累加器中
// 这里是数组对应的位置(下标)
sum += a[i] * b[i];
}
cout << sum; // 输出累加器
return 0;
}
标签:点积,int,小韦,my0213,累加器,整数,累加,数组,向量 来源: https://blog.csdn.net/qq_31790997/article/details/97292681