出発点がx-y平面の原点であるとします。いくつかの制約を指定して距離を最小化する
私は特定の方法で移動することのみ許可されています。 のように、私の次の動きは、2つの座標点の線形結合でしかないということを誰かに教えてくれます。
私の目標は、できるだけ多くの動きで、私が得ることができる出発点に最も近いポイントを見つけることです(コースの原点を除く)。
例えば、2点がa =(13,4)およびb =(17,5)であると言われたとします。
したがって、私が原点から得ることができる最も近いものは(1,1)です。 4a-3bから得られたものです。
私はそれのためのプログラムを書いています。しかし、私によれば、ロジックには完全な欠陥があります。
しかし、私が試したいくつかのテストケースの正解を出力します。
はここ
#include<math.h>
int sq(int a)
{
return a*a;
}
int main(void)
{
int a,b,c,d,min=200000,i,j,n=100;
scanf("%d %d %d %d",&a,&b,&c,&d);
for(i=-100;i<n;i++)
{
for(j=-100;j<n;j++)
{
if(sq((i*a)-(j*c))+sq((i*b)-(j*d))<min)
{
min=sqrt(sq((i*a)-(j*c)))+sqrt(sq((i*b)-(j*d)));
}
}
}
printf("%d\n",min);
return(0);
}
があなたの入力を与えると、問題に取り組むためのより良い方法があればお気軽に私のコードです。
プログラムで出力されている回答は、| x | + | y |です。
* a *と* b *は常に正ですか? – Jacob
また、整数解のみが許されますか? – Jacob
いいえaとbは肯定的である必要はありません。また、完全な解決策しか許されません。 –