我们给出了一个包含节点和边的图。目的是找到连接到图的任何边缘的最大可能节点数。我们知道没有。的节点总数将始终小于或等于完整图中的边数。
为此,我们将尝试制作一个完整的图,其中节点数为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