alina2000klimenko
09.08.2022 07:29

Решите на python(алгоритм решения есть,осталось реализовать в коде) Андрей изучает социальные сети и пытается определить скрытые атрибуты пользователей по их друзьям. Поскольку Андрей - профессиональный программист, то он хочет протестировать свою программу прежде чем верить ее результатам. Но для этого требуется много разных графов, похожих на социальные сети. Андрей хочет получать графы с разным количеством пользователей (т. е. вершин графа) и разными отношениями дружбы (т. е. ребрами графа). Отношение дружбы ненаправленное. В графе не должно быть петель и кратных ребер. Андрей будет задавать желаемое количество вершин и желаемое среднее количество ребер, инцидентных вершине. Его устроит даже граф, если эти его характеристики будут отличаться от заданных, но не более чем на 20%.

Ваша программа получает на вход 2 целых положительных числа - N - количество вершин и K - среднее количество ребер у вершины (1≤ N ≤ 200, 0 ≤ K ≤ N - 1)

Программа печатает граф описанного вида. В первой строке печатается количество вершин графа. Начиная со следующей строки, печатается матрица смежности графа по строкам. Вершины нумеруются последовательно, начиная с 0. Элемент матрицы смежности равен 1, если соответствующее ребро входит в граф, и 0, иначе. Элементы разделяются пробельными символами. Элементы главной диагонал матрицы смежности должны равняться 0. Если графа описанного вида не существует, программа ничего не печатает.

Рассмотрим неориентированный граф с количеством вершин M и количеством ребер L. Такой граф точно существует, если 0<=L<=M(M-1)/2. Итого для целых чисел M и L должно выполняться
0<=L<=M(M-1)/2
0.8K<=L<=1.2K
0.8N<=M<=1.2N
M и L можно найти простым перебором.
Если найдены целые числа M и L, удовлетворяющие этим условиям, то строим граф с M вершинами и L ребрами.​

Нажмите на рекламу ниже и сразу увидите ответ
Популярные вопросы:
Ответ:
valeriaasoskova
10.10.2022 23:21
Const
  n=7;
type
  V=array[1..n] of real;
procedure mReplace(t:real;var a:V;var k:integer);
var
  i:integer;
begin
  k:=0;
  for i:=1 to n do
    if a[i]<t then begin a[i]:=t; Inc(k) end
end;

var
  T:real;
  i,k1,k2:integer;
  P,C:V;
begin
  Write('Введите значение T: '); Read(T);
  Writeln('Введите элементы массива P');
  for i:=1 to n do Read(P[i]);
  Writeln('Введите элементы массива C');
  for i:=1 to n do Read(C[i]);
  mReplace(T,P,k1); mReplace(T,C,k2);
  if k1>k2 then
  begin
    Writeln('Измененнный массив Р'); for i:=1 to n do Write(P[i],' ')
  end
  else
    if k2>k1 then
  begin
    Writeln('Измененнный массив C'); for i:=1 to n do Write(C[i],' ')
  end
  else Writeln('Число замен в массивах равно ',k1)
end.

Тестовое решение:
Введите значение T: 0.005
Введите элементы массива P
0.001 1.54 -2.75 0.002 -0.1 1.2 -0.47
Введите элементы массива C
-5.74 0.0001 4.1 7.24 -1.5 2.9 0.004
Измененнный массив Р
0.005 1.54 0.005 0.005 0.005 1.2 0.005
0,0(0 оценок)
Ответ:
Bobskromnaysh12
10.10.2022 23:21
#include "iostream"
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <cstdio>
using namespace std;
void main()
{
setlocale(LC_ALL, "Russian");
 int i;
 double s = 0, k, size;
 double mas[200];
 cout << "Введите размерность массива:";
 cin >> size;
 srand(time(NULL));
 for (i = 0; i < size; i++)
{
 mas[i] = 0 + rand() % 100; cout << mas[i] << " ";
 }
cout << endl;
 for (i = 0; i < size; i++)
{
 s = s + mas[i];
 }
k = s / size;
 cout << "Среднее арифметическое:" << k <<endl;
 system("pause");
}
0,0(0 оценок)
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота