1

遅れているゼロを削除する別の for ループでこの関数を継続しようとしています。つまり、ポリ a が 1 1 1 でポリ b が 0 -1 -1 の場合、答えは 100 ですが、1 である必要があります。どうすればゼロを削除できますか?

4

2 に答える 2

1

stl ベクトルまたは配列ではなく、動的配列を使用する必要がある場合:

//first get the index of the last trailing 0
int j;
for (j=max-1; j>0 && sum[j] == 0; --j);

//next allocate memory for new array that will not have any trailing 0s
int* tmp = sum;

sum = new int[j+1];

//now copy old values into new array
for(size_t k=0;k<=j;++k){
   sum[k] = tmp[k];
}

delete[] tmp;

memcpy値をコピーするためのループを、より短いコマンドに自由に置き換えてください。

memcpy(sum,tmp,sizeof(int)*(j+1));

上記のコードは、少なくとも 1 つの値の配列になるため、すべて 0 の場合は 0 になります。それ以外の場合は、配列を適切なサイズに縮小します。配列の先頭に大きな値を格納し、最後に最下位桁を格納すると仮定しました。

于 2013-11-01T04:43:01.907 に答える