вроде так^: >
21 путь.
Объяснение:
Для задач такого вида используются довольно универсальные решения. Для города Х вводится характеристика Nх - количество различных путей из города А в город Х. На картинке, например, Nа = 1 (так как единственный попасть в город А из города А - это оставаться в нем), Nб = 1 (единственный попасть из города А в город Б - по прямому пути), аналогично для города Д. В город Г же можно попасть как из города А, так и из города Б, Nг будет равен сумме Nа + Nб. В город Ж можно попасть из городов В, Г и Е, поэтому его Nж будет равен Nв + Nг + Nе.
Давайте найдем количество попасть в каждый город из города А. Для этого начнем идти из города А во все "соседние" города, для которых мы уже можем назвать это количество по принципу, описанному абзацем выше:
Nа = 1
Nб = Nа = 1
Nг = Nа + Nб = 1 + 1 = 2
Nд = Nа = 1
Nе = Nг + Nд = 2 + 1 = 3
...
Мы узнали количество различных путей из города А в город Е. Теперь по аналогии будем искать количество путей из города Е в город П. Чтобы не путаться, введем новую характеристику, например, Cx - количество различных путей из города Е в город X.
Cе = 1
Cж = Cе = 1
Cк = Cж = 1
Cн = Cж = 1
Cм = Cж + Cн = 1 + 1 = 2
Cл = Cж + Cк + Cм = 1 + 1 + 2 = 4
Сп = Cк + Cл + Cм = 1 + 4 + 2 = 7
3 путя из города А в город Е и 7 путей из города Е в город П. Чтобы найти итоговое количество путей, нужно перемножить эти два числа (как бы комбинации каждого путя А->Е с каждым путем Е->П): 3 * 7 = 21.
Поделитесь своими знаниями, ответьте на вопрос:
C++. заданы два массива a(n) и b(m из массива a выбрать и напечатать числа, которые больше хотя бы одного из элементов массива b. использовать функции!
#include <iostream>
#include <time.h>
#include <vector>
using namespace std;
void print_array(int* arr, int n) {
for (size_t i = 0; i < n; i++) {
cout << arr[i] << " ";
}
cout << endl;
}
int* auto_input_array(int* arr, int n) {
for (size_t i = 0; i < n; i++) {
arr[i] = rand() % 200 - 100;
}
return arr;
}
void print_vector(vector<int> vec) {
for (int elem : vec) {
cout << elem << " ";
}
cout << endl;
}
int min_in_array(int* arr, int n) {
int min_arr = arr[0];
for (size_t i = 0; i < n; i++) {
if (arr[i] <= min_arr) {
min_arr = arr[i];
}
}
return min_arr;
}
vector<int> selection_of_elements_in_the_first_array_at_the_minimum_of_the_second_array(int* arr1, int n, int* arr2, int m) {
int count = 0;
int min_arr2 = min_in_array(arr2, m);
vector<int> vec;
for (size_t i = 0; i < m; i++) {
if (arr2[i] <= min_arr2) {
min_arr2 = arr2[i];
}
}
for (size_t i = 0; i < n; i++) {
if (arr1[i] >= min_arr2) {
vec.push_back(arr1[i]);
}
}
return vec;
}
int main() {
srand(time(NULL));
setlocale(LC_ALL, "Russian");
int n;
cout << "Введите количество элементов в массиве A: ";
cin >> n;
int m;
cout << "Введите количество элементов в массиве B: ";
cin >> m;
int* array1 = new int[n];
int* array2 = new int[m];
int sum = 0;
vector<int> vec;
array1 = auto_input_array(array1, n);
array2 = auto_input_array(array2, m);
print_array(array1, n);
print_array(array2, m);
vec = selection_of_elements_in_the_first_array_at_the_minimum_of_the_second_array(array1, n, array2, m);
delete[] array1;
delete[] array2;
cout << "Числа, которые больше любого элемента в массиве B: " << endl;
print_vector(vec);
}