最大化不属于C ++图形中任何边的节点的数量

我们给出了一个包含节点和边的图。目的是找到连接到图的任何边缘的最大可能节点数。我们知道没有。的节点总数将始终小于或等于完整图中的边数。

为此,我们将尝试制作一个完整的图,其中节点数为n,那么将有n(n-1)/ 2条边。

edge = n(n-1)/ 2(这里n为节点)

2 *边缘= n(n-1)。一旦n(n-1)>否。边,那么我们有额外的节点。因此从i = 1迭代到i = n。

直到i(i-1)> 2 * edge。返回ni作为结果。

让我们通过示例来理解-

输入-节点= 5,边= 2

输出-最大化不属于图形中任何边的节点的数量为-2

说明-

2个边可以具有最少3个节点,最多4个节点。

对于3个节点,没有任何边的最大左节点= 2

输入-节点= 2,边= 1

输出-最大化不属于图形中任何边的节点的数量为-0

说明-

至少需要2个节点才能形成边缘。在这种情况下,两者都被占用。没有剩余的节点。

以下程序中使用的方法如下

  • 我们将两个变量节点和边作为可用数据。

  • 函数最大值(整数节点,整数边)不取。节点和边的数量作为参数,并返回不属于图形中任何边的最大节点数

  • 取变量i,温度和最大值。

  • 从i = 0到i <= nodes的启动循环

  • 计算temp = i *(i-1)

  • 计算变量总数为2 *边

  • 每当温度超过总温度时,断开FOR

  • 将max计算为max = nodes-i

  • 返回结果为最大值

示例

#include <bits/stdc++.h>
using namespace std;
int maximum(int nodes, int edges){
   int i, temp = 0, max;
   for (i = 0; i <= nodes; i++){
      temp = i * (i - 1);
      int total = 2* edges;
      if (temp >= total){
         break;
      }
   }
   max = nodes - i;
   return max;
}
int main(){
   int nodes = 10;
   int edges = 5;
   cout<<"最大化不属于图形中任何边的节点的数量是:"<<maximum(nodes, edges) << endl;
}

输出结果

如果我们运行上面的代码,它将生成以下输出-

最大化不属于图形中任何边的节点的数量是: 6