Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

โค้ด C++ หาเวลาทั้งหมดกระต่ายดึงกล่อง

สมมติว่าเรามีพิกัดสองจุด (x1, y1) และ (x2, y2) กระต่ายดึงกล่องอาหาร ผูกเชือกยาว 1 หน่วย กระต่ายดึงกล่องไปที่จุดตัวเองยืน แล้วเดินหนีทิศทางเดิม 1 หน่วย กระต่ายเดิน 1 หน่วย ขวา ซ้าย บน ล่าง โดยไม่ดึงกล่อง กรณีนี้ไม่จำเป็นต้องอยู่ห่าง 1 หน่วยพอดี ถ้าอยากดึงอีก ต้องไปจุดติดกล่อง เริ่มต้นที่ไหนก็ได้ ใช้เวลา 1 วินาทีต่อ 1 หน่วย หาเวลาน้อยสุดย้ายกล่องจากเริ่มต้นถึงปลายทาง

เช่น ถ้าอินพุตคือ x1 = 1; y1 = 1; x2 = 2; y2 = 2 เอาต์พุตจะเป็น 4 เพราะเริ่ม (2,1) ดึงกล่องไป (2,1) ตัวอยู่ (3,1) เดินไป (3,2) แล้ว (2,2) ไม่ดึง แล้วดึงกล่องไป (2,2) ตัวไป (2,3) ใช้ 4 วินาที

ขั้นตอนการแก้ปัญหา

s := 0
if x1 != x2 และ y1 != y2:
    s := |x2 - x1| + |y2 - y1| + 2
otherwise:
    s := |x2 - x1| + |y2 - y1|
return s

ตัวอย่างโค้ด

#include <bits/stdc++.h>
using namespace std;

int solve(int x1, int y1, int x2, int y2) {
    int s = 0;
    if (x1 != x2 && y1 != y2)
        s = abs(x2 - x1) + abs(y2 - y1) + 2;
    else
        s = abs(x2 - x1) + abs(y2 - y1);
    return s;
}

int main() {
    int x1 = 1;
    int y1 = 1;
    int x2 = 2;
    int y2 = 2;
    cout << solve(x1, y1, x2, y2) << endl;
}

อินพุต

1, 1, 2, 2

เอาต์พุต

4