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