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