哈达玛矩阵乘法
作者: 赵晓鹏时间限制: 1S章节: 递归与分治
输入说明 :
见问题描述。
输出说明 :
见问题描述。
输入范例 :
1
4 -6
输出范例 :
-2 10
#include <iostream>
#include <vector>
using namespace std;
vector<int>res;
void cal(int len, int*v){
if(len==1){
res.push_back(v[0]);
return;
}
len=len/2;
int left[len],right[len];
for(int i=0;i<len;++i){
left[i]=v[i];
right[i]=v[i];
}
for(int i=len;i<2*len;++i){
left[i-len]+=v[i];
right[i-len]-=v[i];
}
cal(len, left);
cal(len, right);
}
int main(){
int k;
cin>>k;
int len=1;
for(int i=1;i<=k;++i){
len*=2;
}
int v[len];
for(int i=0;i<len;++i){
cin>>v[i];
}
cal(len, v);
for(long long unsigned int i=0;i<res.size();++i){
if(i==res.size()-1){
cout<<res[i];
}
else{
cout<<res[i]<<' ';
}
}
return 0;
}