Код:
#include <iostream>
#include <string>
using namespace std;
void printArray(int** arr, size_t X, size_t Y) {
for (size_t i = 0; i < X; ++i) {
for (size_t j = 0; j < Y; ++j) {
cout << arr[i][j] << " ";
}
cout << endl;
}
}
int main() {
size_t X, Y;
cout << "Number of rows in the array: ";
cin >> X;
cout << "Elements in each row of the array: ";
cin >> Y;
int** arr = new int* [X];
for (size_t i = 0; i < X; ++i) {
arr[i] = new int[Y];
cout << "#" << i + 1 << ": ";
for (size_t j = 0; j < Y; ++j)
cin >> arr[i][j];
}
size_t index;
cout << "index to check the row for non-decreasing ordering: ";
cin >> index;
--index; // numbering from 1
bool flag = 1;
for (int i = 0; i < Y - 1; ++i) {
if (!(arr[index][i] <= arr[index][i + 1])) {
cout << "No, " << i + 1 << (i + 1 == 1 ? "st" : (i + 1 == 2 ? "nd" : (i + 1 == 3) ? "rd" : "th")) << " element (" << arr[index][i] << ") violates the non-decreasing ordering (" << arr[index][i] << " > " << arr[index][i + 1] << ").\n";
flag = 0;
break;
}
}
if (flag)
cout << "Yes, the specified row is ordered in non-decreasing order.\n";
flag = 1;
index = 1;
cout << "index to check the column for non-increasing ordering: ";
cin >> index;
--index;
flag = 1;
for (int i = 0; i < X - 1; ++i) {
if (!(arr[i][index] >= arr[i + 1][index])) {
cout << "No, " << i + 1 << (i + 1 == 1 ? "st" : (i + 1 == 2 ? "nd" : (i + 1 == 3) ? "rd" : "th")) << " element (" << arr[i][index] << ") violates the non-increasing ordering (" << arr[i][index] << " < " << arr[i][index + 1] << ").\n";
flag = 0;
break;
}
}
if (flag)
cout << "Yes, the specified row is ordered in non-increasing order.\n";
}
Не попавшую на рисунок вершину обозначим К.
С пунктом В связано наибольшее количество точек - ему соответствует П6. Пункт Е - единственный, который не связан с В - на его роль претендует только П2. Только пункт К имеет связь ровно с тремя вершинами - по таблице ему подходит П4.
Имеем:
В - П6
Е - П2
К - П4
Зная, что вершина Д связана с Е, определим по таблице, что ей подходит П7 (П4 уже занята пунктом К). Точке Г соответствует П3.
Осталось посчитать расстояния всевозможных маршрутов от В до Е и выбрать кратчайший.
В-Д = П6-П7 = 20
Д-Е = П7-П2 = 15
В-Д-Е = 20+15 = 35
В-К = П6-П4 = 25
К-Е = П4-П2 = 5
В-К-Е = 25+5 = 30
В-Г = П6-П3 = 10
Г-К = П3-П4 = 10
К-Е = П4-П2 = 5
В-Г-К-Е = 10+10+5 = 25
25 < 30 < 35
Таким образом, длина кратчайшего маршрута - 25.
Вообще, при решении подобных задач старайтесь искать какие-нибудь зацепки - например, вершины с таким количеством соседей, которого нет у других вершин (вроде вершин В и К в этой задаче). Где-то можно использовать метод исключения и т.п.
begin
y:=0;
repeat
writeln('Введите число');
read(x);
if x mod 2 =0 then y:=y+1;
until x<0;
writeln('Количество четных цифр = ',y);
end.