경로 계획 (경 동 2016 인턴 문제)
문제 풀이 사고: 동의 하 는 직선 상의 출발점 과 종점 이 없 으 면 출발점 이 대각선 에 따라 먼저 종점 과 같은 직선 의 과도 한 점 에 도착 한 다음 에 (수평 또는 수직) 을 돌려 종점 에 도착 하도록 한다.
코드 는 다음 과 같 습 니 다:
#include
int chan(char c){
switch (c) {
case 'a':return 1;
case 'b':return 2;
case 'c': return 3;
case 'd': return 4;
case 'e':return 5;
case 'f':return 6;
case 'g':return 7;
case 'h':return 8;
}
}
int abs(int x){
return x>=0?x:-x;
}
void f(int x,int y){
int i;
if(x==0&&y==0){
return ;
}else if(x==0){
//printf("%d
",y);
if(y>0){
for(i=1;i<=y;i++){
printf("D
");
}
}else{//y<0
y=abs(y);
for(i=1;i<=y;i++){
printf("U
");
}
}
}else if(y==0){
if(x>0){
for(i=1;i<=x;i++){
printf("L
");
}
}else{//x<0
x=abs(x);
for(i=1;i<=x;i++){
printf("R
");
}
}
}else if(x>0&&y>0){
for(i=1;i<=x;i++){
printf("LD
");
}
}else if(x<0&&y<0){
x=abs(x);
for(i=1;i<=x;i++){
printf("RU
");
}
}else if(x>0&&y<0){
for(i=1;i<=x;i++){
printf("LU
");
}
}else {
for(i=1;i<=y;i++){
printf("RD
");
}
}
}
int main(){
char a1,a2;
int d,dx,dy,x1,y1,x2,y2,x,y,i;
while(scanf("%c%d",&a1,&y1)!=EOF){
getchar();
scanf("%c%d",&a2,&y2);
getchar();
x1=chan(a1);
x2=chan(a2);
x=x1-x2;
y=y1-y2;
dx=abs(x);
dy=abs(y);
d=abs(dx-dy);
if(dx==dy){
printf("%d
",dx);
f(x,y);
}else if(dx>dy){
printf("%d
",dx);
if(x>0){
f(dy,y);
f(d,0);
}else{
f(-dy,y);
f(-d,0);
}
}else{
printf("%d
",dy);
if(y>0){
f(x,dx);
f(0,d);
}else{
f(x,-dx);
f(0,-d);
}
}
}
return 0;
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.