算法训练 线性运算

/*给定n*n的矩阵A和一个列向量X,求AX的值*/

#include<iostream>
using namespace std;

int a[100][100];//二维数组,用于存放矩阵
int c[100];//一维数组,用于存放1,2,1

int main() {
	int n,i,j,k;
	int sum = 0;
	cin >> n;
	//存入矩阵数据
	for ( i = 0; i < n; i++)
	{
		for ( j = 0; j < n; j++) 
		{
			cin >> a[i][j];
		}
	}
	//存入1,2,1
	for ( k = 0; k < n; k++)
	{
		cin >> c[k];
	}
	//遍历矩阵
	for ( i = 0; i < n; i++)
	{
		for (j = 0; j < n; j++)
		{
			k = j;
			//cout << a[i][j]<<" " << c[k]<<endl;//用于观察相乘的两个数
			sum +=  a[i][j] * c[k];
		}
		cout << sum << endl;
		sum = 0;//当得到第一个sum时,将sum置零,避免影响下一个sum的大小
	}
	return 0;
}

资源限制

时间限制:1.0s   内存限制:512.0MB

问题描述

  给定n*n的矩阵A和一个列向量X,求AX的值。

输入格式

  输入的第一行包含一个整数n。1<=n<=100。
  接下来n行,每行n个整数,表示A中的每一个元素。每个元素的绝对值不超过1000。
  接下来n行,每行一个整数,表示X中的每一个元素。每个元素的绝对值不超过1000。

输出格式

  输出n行,每行一个整数,表示AX中的每个元素。

样例输入

3
1 2 3
4 5 6
7 8 9
1
2
1

样例输出

8
20
32

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
感知器是一种二分类的线性分类算法,可以用来实现逻辑运算。感知器的原理是,将输入数据和对应的权重进行线性加权和,然后通过一个激活函数(如阶跃函数)进行判断,输出二分类结果(1或-1)。 举个例子,我们可以用感知器来实现AND逻辑运算。AND逻辑运算输入是两个二进制数(0或1),输出结果为1当且仅当两个输入均为1,否则输出0。我们可以将输入数据和对应的权重进行线性加权和,然后通过阶跃函数进行判断。 具体地,假设我们有两个输入x1和x2,对应的权重分别为w1和w2,阈为θ。那么感知器的输出为: y = f(w1*x1 + w2*x2 - θ) 其中,f是阶跃函数,当w1*x1 + w2*x2 - θ大于0时,输出1,否则输出-1。 我们可以将权重和阈初始化为随机,然后通过反复调整权重和阈,使得感知器的输出结果逼近真实的AND逻辑运算结果。 具体地,假设我们有一组训练数据{(x1=0, x2=0), y=0}, {(x1=0, x2=1), y=0}, {(x1=1, x2=0), y=0}, {(x1=1, x2=1), y=1}。我们可以将每个输入数据和对应的真实输出结果带入感知器,然后计算感知器的输出结果和真实输出结果之间的误差。然后根据误差大小调整权重和阈,使得误差越来越小,直到最终的感知器输出结果逼近真实的AND逻辑运算结果。 具体的训练过程可以参考感知器的学习算法,如感知器学习规则(Perceptron Learning Rule)或Delta规则(Delta Rule)。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值