私はプログラミングのパズルを取り組んでいますが、私はちょっと困惑しています。問題は、2次元計画上のディスクの交差の数を数えることです。 xは常に0で、yは配列のインデックスです。要素の半径は配列要素に格納されます。要素の数が少ない要素ではパフォーマンスは問題ありませんが、10,000,000のパフォーマンスのような多数の要素が悪いです。私は現在、配列を処理するために2つのネストされたforループを使用しています。アレイ処理ループを最適化する
誰かが助けてくれれば幸いです。私は私に与えられたデータ構造に縛られており、それらを変更することはできません。私は整数を扱っているので、ディスクが別のディスクと交差していて、中心点が同じy軸上にある場合の計算です。以下は
はコードです:あなたが大規模な数字で、したがって、悪い速度をディスクの各ペアをテストしているので、
int number_of_intersections (int A[], int n)
{
int base = 0;
int inc = 0;
int intersect = 0;
int maxrad = 0;
int x;
if (n>1)
{
for (base=0;base<(n-1);base++)
{
inc = base+1;
do
{
if (inc - base <= (A[base] + A[inc]))
{
intersect ++;
if (!(intersect^10000000))
{
return -1;
}
}
inC++;
} while (inc < n);
}
}
return intersect;
}
は
ポイントを明確にするには、 '(もし!(交差^ 1000000))を書いていません'。 'if(intersect == 10000000)'と書いてください。それはより明確です。また、ここでいくつかのコンテキストと例を提供できますか?何を試しましたか?なぜそれは動作しませんでしたか? – templatetypedef
xが常に0の場合、その1次元の平面は... –
あなたのdo-whileループは 'for(inc = base + 1; inc