計算兩個一維陣列的卷積

kewlgrl發表於2016-08-26

a[m]和b[n]分別為兩個一維陣列,c[m+n-1]是卷積陣列。

#include <iostream>
#include <cstdio>
#include <cstring>
#include <cmath>
#include <vector>
#include <queue>
#include <map>
#include <algorithm>
using namespace std;
#define INF 0xfffffff
#define maxn 100010

int main()
{
    int m=5,n=5;
    int a[5]= {0,1,0,2,1},b[5]= {0,1,0,2,1};
    int i,j;
    int k=m+n-1;//卷積後陣列長度
    int c[k];
    memset(c,0,sizeof(c));//注意一定要清零
    /**卷積計算**/
    for(i=0; i<k; i++)
    {
        for(j=max(0,i+1-n); j<=min(i,m-1); j++)
            c[i]+=a[j]*b[i-j];
        cout<<c[i]<<" ";
    }
    /****/
    cout<<endl;
}


相關文章