C++ 中用 N 个磁铁形成磁铁组的数量


数字1表示正极,而0表示负极。

磁铁的两极将为1001。可以使用相互吸引的磁铁形成一个组。磁铁的两极彼此相对时,将属于同一组。

这里,给定 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

更新于: 2021-10-26

774 次查看

启动您的职业生涯

通过完成课程获得认证

开始
广告