私はオンラインコードスクールで簡単なアルゴリズムに取り組んでいます。次のアルゴリズムは私のXcodeコンソールでは問題なく機能しますが、オンラインプラットフォームはメモリがオーバーフローしていることを出力します。次のコードは、株式のスクリーニングを扱います。(最初はmalloc動的割り当てを使用しましたが、このメッセージの後、単純な配列を使用しました。以下を参照してください)。
N個の製品の在庫があるとします。初期ストックがサイズNの1次元配列(c[i], i between 0 and N-1
)によって設定されているとします。ここで、M個の操作があり、それぞれが2つのエントリ(製品のインデックスと入力された製品の数)で表されているとします。結果は、在庫の各製品の最終状態を出力します。次に例を示します。
入力:
3(製品数)4 6 3(製品「1」の4項目、製品「2」の6項目、...)2(操作数)2 3(製品「2」の3要素多い)1 -1(1要素から製品「1」を引いたもの)
出力:
3(製品「1」の左4-1)9(製品「2」の左6 + 3)3(製品「3」の左)
これが私のコードです:
#include <stdio.h>
#include <stdlib.h>
int main()
{ int i,j,N,M;
//Number of products
scanf("%d",&N);
//Initial stock of each product
int c[N];
//Input if the user
for (i = 0; i < N; i++) {
scanf("%d", &c[i]);}
//Outputs's result
int res[N];
//Initializing the output res
for (i = 0; i < N; i++) {
res[i] = c[i];}
//Number of operations
scanf("%d",&M);
//Each operation represented by the index of the product, and the number elements of the //latter
int d[M][2];
//A loop to update at each step the stock
for (i = 0; i < M; i++) {
scanf("%d%d", &d[i][0],&d[i][1]);}
for(i=0;i<M;i++){
res[d[i][0]-1] = res[d[i][0]-1] + d[i][1];}
//Printing the result
for(i=0;i<N;i++){
printf("%d ",res[i]);}
}
誰かアイデアがありますか?