ответ:Дерево игры - в прилагаемом файле. У игрока, делающего ход первым (Пети) есть выигрышная стратегия: первый ход должен быть +3 (в куче получится 13 камней). В этом случае при ходе второго игрока (Вани) +3 (в куче 16 камней) первый (Петя) выигрывает ходом *2 (в куче 32 камня); при ходе второго игрока (Вани) *2 (в куче 26 камней) первый (Петя) также выигрывает ходом *2 (в куче 52 камня). Второй игрок (Ваня) может выиграть только в случае, если первый (Петя) сделает начальный ход *2 (в куче 20 камней), следующий ход (Вани) *2 (в куче 40 камней) приводит к выигрышу.
ответ:Дерево игры - в прилагаемом файле. У игрока, делающего ход первым (Пети) есть выигрышная стратегия: первый ход должен быть +3 (в куче получится 13 камней). В этом случае при ходе второго игрока (Вани) +3 (в куче 16 камней) первый (Петя) выигрывает ходом *2 (в куче 32 камня); при ходе второго игрока (Вани) *2 (в куче 26 камней) первый (Петя) также выигрывает ходом *2 (в куче 52 камня). Второй игрок (Ваня) может выиграть только в случае, если первый (Петя) сделает начальный ход *2 (в куче 20 камней), следующий ход (Вани) *2 (в куче 40 камней) приводит к выигрышу.
Код на C++:
#include <iostream>
using namespace std;
int main()
{
setlocale(LC_ALL, "rus");
const int N = 5;
int A[N][N], k;
cout << "Введите матрицу:" << endl;
for (int i = 0; i < N; i++)
{
for (int j = 0; j < N; j++)
{
cin >> A[i][j];
}
}
k = 0;
for (int j = 0; j < N - 1; j++)
{
for (int i = j + 1; i < N; i++)
{
if (A[i][j] == A[j][i])
{
k++;
}
}
}
if (k == (pow(N, 2) - N) / 2)
{
cout << "Да, симметрична!" << endl;
for (int i = 0; i < N; i++)
{
A[i][i] = 0;
for (int j = 0; j < N; j++)
{
cout << A[i][j] << " ";
}
cout << endl;
}
}
else
{
cout << "Нет, не симметрична!" << endl;
}
cin.get();
return 0;
};
Объяснение: