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

ค้นหาจำนวนสามเหลี่ยมหลังจากเคลื่อนที่ N โดยใช้ C++


ในบทความ ขั้นแรก เราต้องวาดรูปสามเหลี่ยมสี เราต้องใช้สามเหลี่ยมที่ไม่มีสีแล้วแบ่งสามเหลี่ยมออกเป็นสี่ด้านเล็กๆ สามเหลี่ยมที่มีพื้นที่เท่ากันและทำต่อไปจนถึงขั้นที่ n แล้วหาจำนวนสามเหลี่ยมด้านเท่าที่มีอยู่ในรูป

แนวทางในการหาทางออก

แนวทางแก้ไขปัญหานี้มีอยู่สองแนวทางด้วยกันคือ -

แนวทางกำลังเดรัจฉาน

เราสามารถสังเกตได้ว่าจำนวนสามเหลี่ยมเพิ่มขึ้นเรื่อยๆ ตามจำนวนบางส่วน (เพิ่มขึ้น 3*previous_number + 2) หลังจากทุกขั้นตอน ดังนั้นเราจึงสามารถวนซ้ำจนถึง n และคำนวณจำนวนสามเหลี่ยมได้

ตัวอย่าง

#include <iostream>
using namespace std;
int main() {
   int n = 2; // number of operations we made
   int count = 1; // at first we have only one triangle
   for(int i = 0; i < n; i++) { // looping till n
      count = 3 * count + 2; // as the triangle count is increasing by 3*prev + 2
   }
   cout <<count << "\n";
}

ผลลัพธ์

17

ความซับซ้อนของเวลาของโปรแกรมด้านบนคือ O(N) โดยที่ N คือจำนวนการดำเนินการที่ดำเนินการ ตอนนี้ เราสามารถปรับปรุงความซับซ้อนของเวลาได้ ซึ่งจะมีประโยชน์มากเมื่อเราจัดการกับข้อจำกัดที่สูงขึ้น

แนวทางที่มีประสิทธิภาพ

ในแนวทางนี้ เราจะสร้างสูตรที่จะคำนวณคำตอบให้เรา

ตัวอย่าง

#include <bits/stdc++.h>
using namespace std;
int main() {
   int n = 2; // number of operations we made
   int count;
   count = 2 * (pow(3, n)) - 1; // the total number of triangles after nth move
   cout << count << "\n";
}

ผลลัพธ์

17

รหัสด้านบนมีความซับซ้อนของเวลาของ O(log(N)) โดยที่ N คือจำนวนการเคลื่อนไหวที่เราดำเนินการ

คำอธิบายของโค้ดด้านบน

ในโปรแกรมที่กำหนด เรากำลังสร้างสูตรเพื่อแก้ปัญหาขั้นตอนที่กำหนดและใส่ค่าที่ต้องการลงในสูตร แล้วพิมพ์ผลลัพธ์

บทสรุป

บทความนี้จะค้นหาจำนวนสามเหลี่ยมหลังจากที่ N เคลื่อนที่โดยใช้การสังเกตและคณิตศาสตร์บางส่วน เรายังได้เรียนรู้โปรแกรม C++ สำหรับปัญหานี้และแนวทางที่สมบูรณ์ (Normal and excellent ) ซึ่งเราแก้ปัญหานี้ได้

เราสามารถเขียนโปรแกรมเดียวกันในภาษาอื่นๆ เช่น C, java, python และภาษาอื่นๆ เราหวังว่าคุณจะพบว่าบทความนี้มีประโยชน์