38 путей.
Объяснение:
Для задач такого вида используются довольно универсальные решения. Для города Х вводится характеристика Nх - количество различных путей из города А в город Х. На картинке, например, Nа = 1 (так как единственный попасть в город А из города А - это оставаться в нем), Nб = 1 (единственный попасть из города А в город Б - по прямому пути), аналогично для города Д.
Давайте найдем количество попасть в каждый город из города А. Для этого начнем идти из города А во все "соседние" города, для которых мы уже можем назвать это количество по принципу, описанному абзацем выше:
Nа = 1
Nб = Nа = 1
Nг = Nб + Nа = 1 + 1 = 2
Nд = Nа = 1
Nв = Nб + Nг = 1 + 2 = 3
Nе = Nг + Nд = 2 + 1 = 3
Nж = Nв + Nг + Nе = 3 + 2 + 3 = 8
Nк = Nв + Nж = 3 + 8 = 11
Nл = Nк + Nж = 11 + 8 = 19
Мы узнали количество различных путей из города А в город Л. Теперь по аналогии будем искать количество путей из города Л в город П. Чтобы не путаться, введем новую характеристику, например, Cx - количество различных путей из города Л в город X.
Cл = 1
Cм = Cл = 1
Cп = Cл + Cм = 1 + 1 = 2
19 путей из города А в город Л, и 2 путя из города Л в город П. 19 путей, если после города Л мы сразу пойдем в город П, плюс еще 19 путей, если мы после города Л зайдем сначала в город М, а уже потом в П. Итого 19 * 2 = 38 путей.
#include <iostream>
#include <cstdlib>
#include <ctime>
#include <vector>
using namespace std;
int main()
{
int i, j, sum=0, n, m, p=1;
cout<<"Введите количество строк:"<<endl;
cin >> n;
cout<<"Введите количество столбцов:"<<endl;
cin >> m;
int k=i, h=j;
int a[n][m];
int max = a[0][0];
cout<<"Исходный массив:"<<endl;
for (i=0; i<n;i++)
{
for (j=0;j<m;j++)
{
a[i][j]=-10 + rand()%20;
cout<<a[i][j]<<" ";
}
cout<<endl;
}
for (i = 0; i < n; i++)
{
{
for (j = 0; j < m; j++)
{
sum += a[i][j];
}
cout<<"Сумма "<<i<<" строки равна: "<<sum<<endl;
sum = 0;
}
}
for (j = 0; j < m; j++)
{
for (i = 0; i < n; i++)
{
p *= a[i][j];
}
cout<<"Произведение "<<j<<" столбца равно: "<<p<<endl;
p = 1;
}
for(k=0, h=0; k<n && h<m; k++, h++)
{
if(a[k][h]>max)
{
max = a[k][h];
}
}
cout<<"Наибольшее число на главной диагонали: "<<max<<endl;