시작점이 x-y 평면상의 원점이라고합니다.몇 가지 제약 조건이 주어지면 거리를 최소화하십시오
나는 특정 방식으로 만 이동할 수 있습니다. 에서와 같이 누군가 내 옆으로 움직이는 것은 단지 2 개의 좌표 지점의 선형 조합 일 수 있다고 알려줍니다.
내 목표는 내가 얻을 수있는 출발점에 가장 가까운 지점을 찾기 위해 최대한 많은 움직임이 있습니다 (물론 출발점 제외).
예를 들어, 2 점이 = (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는 양수일 필요가 없습니다. 그렇습니다. 완전한 솔루션 만 허용됩니다. –