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

จำนวนกลุ่มแม่เหล็กที่เกิดจากแม่เหล็ก N ใน C++


ตัวเลข 1 เป็นตัวแทนของขั้วบวกในขณะที่ 0 แทนขั้วลบ

แม่เหล็กจะมีทั้งสองขั้วเป็น 10 หรือ 01. กลุ่มสามารถเกิดขึ้นได้ด้วยแม่เหล็กที่ดึงดูดซึ่งกันและกัน แม่เหล็กที่มีขั้วต่างกันหันเข้าหากันจะอยู่ในกลุ่มเดียวกัน

ที่นี่คุณจะได้รับแม่เหล็กจำนวน N คุณจำเป็นต้องค้นหาจำนวนกลุ่มที่สามารถสร้างขึ้นกับพวกเขาได้

เมื่อใดก็ตามที่มีแม่เหล็กสองชนิดอยู่เคียงข้างกัน ก็จะเกิดกลุ่มใหม่ขึ้น ในกรณีนั้นให้เพิ่มจำนวนกลุ่ม

มาดูตัวอย่างกัน

ป้อนข้อมูล

magnets = ["10", "01", "01", "01", "10", "01"]

ผลผลิต

4

มีแม่เหล็ก 4 ตัวที่ดึงดูดซึ่งกันและกันในอาร์เรย์ที่กำหนด คือ "10", "01", "10", "01"

อัลกอริทึม

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

การนำไปใช้

ต่อไปนี้เป็นการนำอัลกอริธึมข้างต้นไปใช้ใน C++

#include <bits/stdc++.h>
using namespace std;
int getMangetGroupsCount(string magnets[], int n) {
   int count = 1;
   for (int i = 1; i < n; i++) {
      if (magnets[i] != magnets[i - 1]) {
         count++;
      }
   }
   return count;
}
int main() {
   string magnets[] = { "10", "01", "01", "01", "10", "01" };
   int n = 6;
   cout << getMangetGroupsCount(magnets, n) << endl;
   return 0;
}

ผลลัพธ์

หากคุณเรียกใช้โค้ดด้านบน คุณจะได้ผลลัพธ์ดังต่อไปนี้

4