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

ตำแหน่งหลังจากทำตามขั้นตอน N ไปทางขวาและซ้ายในลักษณะอื่นใน C++


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

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

มาดูตัวอย่างเพื่อทำความเข้าใจปัญหากัน

ป้อนข้อมูล − N =4, A =3, B =1

ผลผลิต

คำอธิบาย

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