, написать программу, очень ! Дан одномерный массив вещественных чисел размерностью до 20 элементов, необходимо упорядочить по возрастанию отдельно каждую пятерку элементов, вывести на экран исходный массив и результат работы программы. Заранее
Каждая из компонент связности должна быть кликой (иначе говоря, каждые две вершины в одной компоненте связности должны быть связаны ребром). Если в i-ой компоненте связности вершин, то общее число рёбер будет суммой по всем компонентам связности:
Требуется найти максимум этого выражения (т.е. на самом деле - максимум суммы квадратов) при условии, что сумма всех ni равна N и ni - натуральные числа.
Если K = 1, то всё очевидно - ответ N(N - 1)/2. Пусть K > 1.
Предположим, n1 <= n2 <= ... <= nK - набор чисел, для которых достигается максимум, и n1 > 1. Уменьшим число вершин в первой компоненте связности до 1, а оставшиеся вершины "перекинем" в K-ую компоненту связности. Вычислим, как изменится сумма квадратов: Поскольку по предположению n1 > 1 (тогда и nK > 1), то сумма квадратов увеличится, что противоречит предположению о том, что на выбранном изначально наборе достигается максимум. Значит, максимум достигается, если наименьшая по размеру компонента связности - изолированная вершина. Выкинем эту компоненту связности, останутся K - 1 компонента связности и N - 1 вершина. Будем продолжать так делать, пока не останется одна вершина, тогда получится, что во всех компонентах связности кроме последней должно быть по одной вершине.
ответ:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
using system;
using system.collections.generic;
using system.text;
namespace laba3v5
{
class program
{
static void main(string[] args)
{
random rnd = new random();
console.write ("k=");
k = convert.toint32(console.;
console.write ("l=");
l = convert.toint32(console.;
int maxvalue = 2^14;
int[] a = new int[k];
int t1 = environment.tickcount;
for (int i = 0; i < k; i++);
{
a[i] = rnd.next(0, maxvalue);
console.write(""+ a[i]);
{
console.writeline();
int t2 = environment.tickcount;
console.writeline("продолжительность работы: " + (t2 - t1) / 1000.0);
int[] b = new int [l];
int t3 = enviroment. tickcount;
for (int i = 0; i < l; i++);
{
b[i] = rnd. next( 0, maxvalue);
console.writeline write (" " + b[i]);
}
console.writeline();
//: ob
do (0++k)+(l+ while (k< =l) & & (l< =n);
//: od
int t4 = enviroment. tickcount;
console.writeline("продолжительность работы: " + (t2 - t1) / 1000.0);
console.writeline ("k=" +k);
console.writeline ("l=" +l);
}
}
}
//k> 1 l> =k n> =l
//дан массив размера n и целые числа k и l (1 < k ≤ l ≤ n).
//найти сумму всех элементов массива, кроме элементов с номерами от k до l включительно.
}
}
}
объяснение: