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

ตำแหน่งหลังจากก้าว N ครั้ง ขวาและซ้ายสลับกันใน C++

ในปัญหานี้ เราได้รับจำนวนเต็มสามตัว N, A และ B มีคนยืนที่พิกัด 0 เคลื่อนที่

A ก้าวไปทางขวา และจากนั้น B ก้าวไปทางซ้าย แล้วอีกครั้งขวา งานของเราคือพิมพ์ตำแหน่งสุดท้ายขององค์ประกอบหลังจาก N การเคลื่อนที่

มาดูตัวอย่างเพื่อเข้าใจปัญหา:

Input - N = 4, A = 3, B = 1

Output -

Explanation -

1st move -> right 3, +3
2nd move -> left 1, -1
3rd move -> right 3, +3
4th move -> left 1, -1
Position after 4 moves, +3-1+3-1 = 4.

เพื่อแก้ปัญหานี้ เราต้องหาจำนวนก้าวทั้งหมดที่คนคนนั้นเดิน โดยนับการเคลื่อนที่ขวาเป็นบวก และการเคลื่อนที่ซ้ายเป็นลบ การเคลื่อนที่ครั้งคี่ทั้งหมดเป็นขวา และการเคลื่อนที่คู่ทั้งหมดเป็นซ้าย

จำนวนก้าวทั้งหมดจะถูกคำนวณโดยสูตร:

Steps = [((n+1)/2)*a - (n/2)*b]

ตัวอย่าง

โปรแกรมแสดงการประกอบโซลูชันของเรา:

#include <iostream>
using namespace std;

void finalPosition(int n, int a, int b) {
    int steps = ((n + 1)/2)*a - (n/2)*b;
    cout << steps;
}

int main() {
    int N=4, A=3, B=1;
    cout << "The final position of the person after " << N << " steps is ";
    finalPosition(N, A, B);
    return 0;
}

ผลลัพธ์

The final position of the person after 4 steps is 4