1

これは宿題です。

次の式を使用して、配列aと配列を乗算しようとしています。b

c[0]=a[0]*b[0]+a[0]*b[1]+a[0]*b[2]+....a[0]*b[n-1]

c[1]=a[1]*b[1]+a[1]*b[2]+a[1]*b[3]+....a[1]*b[n-1]

等々...

しかし、このコードは配列を介してのみ実行され、a配列を介して実行されないようbです。私が得た結果は次のようになります。

6
12
18
9
6
15

任意のポインタをいただければ幸いです。

私のコード -

#include <iostream>

using namespace std;
const int n=6;
int main()
{

int a[n]= {2,4,6,3,2,5};
int b[n]= {3,2,1,4,2,3};
int c[n];

for (int h=0; h<n; h++)
{
    for (int g=0; g<n; g++)
    {
        c[h] = a[h]*b[g];
    }
}

for (int i=0; i<n; i++)
{
    cout << c[i] << endl;
}
}
4

4 に答える 4

2

A[i] を公約数にすることで問題を単純化できます

だからあなたは得る

c[0]  =a[0]  *(b[0]+b[1]+b[2]+...+b[n-1])
c[1]  =a[1]  *(b[1]+b[2]+...+b[n-1])
c[n-1]=a[n-1]*(b[n-1])

したがって、O(n)解決策は次のようになります。

int sumB = 0;        
for (int i=n-1; i >= 0; --i){
  sumB += b[i];
  c[i] = a[i] * sumB;
}
于 2013-05-24T17:50:05.203 に答える
0

16 行目は次のようになります。

c[h] = c[h] + a[h] * b[g];

コードの残りの部分は問題ないようです。

于 2013-05-24T17:39:00.343 に答える