ตัวเลข 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