Используем бэктрекинг (англ. backtracking - обратное прослеживание). Необходимо оставить противнику 1 фишку с тем, чтобы он был вынужден взять её и проиграть. Для этого надо самому иметь позицию, в которой имеется от 2 до 5 фишек (чтобы взяв допустимый 1-4 фишки, оставить одну). Чтобы вынудить противника оставить 2-5 фишек, надо создать ему позицию с 6 фишками (6-1=5, 6-4=2). Позицию с 6 фишками мы можем создать, имея 7-10 фишек. Исходное количество фишек - 11. Если первый ход у противника, он забирает от 1 до 4 фишек и предоставляет нам как раз необходимые для выигрыша 7-10 фишек. Итак, при первом ходе противника нашей стратегией будет оставить противнику шесть фишек, а затем одну. Если первый ход наш, то при правильной игре противника выигрыш невозможен. При неправильной - стараться перейти к выигрышной стратегии (6 и 1 фишка).
Написал программу с комментариями, сами составите алгоритм int main () { const int n = 10; int massive[n]; int maxElem; int numberOfMaxElem; for(int i=0;i<n;++i) { cin>>massive[i]; // вводим массив из 10 элементов } maxElem = massive[0]; // максимальный элемент - первый, присваиваем for(int i=0;i<n;++i) { if(massive[i]>maxElem) { // если максимальный элемент меньше maxElem = massive[i];//чем данный, то данному присваеваем //максимальный numberOfMaxElem = i; //определяем номер макс элемента } } int multElemBeforeMax; for(int j=0;j<numberOfMaxElem;++j) { multElemBeforeMax *= massive[j]; // произведение элементов до максимального } int countElemBehindMax; countElemBehindMax = n-numberOfMaxElem; // кол-во элементов после максимального cout <<multElemBeforeMax; // вывод на экран cout <<countElemBehindMax; return 0; }
Необходимо оставить противнику 1 фишку с тем, чтобы он был вынужден взять её и проиграть. Для этого надо самому иметь позицию, в которой имеется от 2 до 5 фишек (чтобы взяв допустимый 1-4 фишки, оставить одну).
Чтобы вынудить противника оставить 2-5 фишек, надо создать ему позицию с 6 фишками (6-1=5, 6-4=2).
Позицию с 6 фишками мы можем создать, имея 7-10 фишек.
Исходное количество фишек - 11. Если первый ход у противника, он забирает от 1 до 4 фишек и предоставляет нам как раз необходимые для выигрыша 7-10 фишек.
Итак, при первом ходе противника нашей стратегией будет оставить противнику шесть фишек, а затем одну.
Если первый ход наш, то при правильной игре противника выигрыш невозможен. При неправильной - стараться перейти к выигрышной стратегии (6 и 1 фишка).
int main () {
const int n = 10;
int massive[n];
int maxElem;
int numberOfMaxElem;
for(int i=0;i<n;++i) {
cin>>massive[i]; // вводим массив из 10 элементов
}
maxElem = massive[0]; // максимальный элемент - первый, присваиваем
for(int i=0;i<n;++i) {
if(massive[i]>maxElem) { // если максимальный элемент меньше
maxElem = massive[i];//чем данный, то данному присваеваем //максимальный
numberOfMaxElem = i; //определяем номер макс элемента
}
}
int multElemBeforeMax;
for(int j=0;j<numberOfMaxElem;++j) {
multElemBeforeMax *= massive[j]; // произведение элементов до максимального
}
int countElemBehindMax;
countElemBehindMax = n-numberOfMaxElem; // кол-во элементов после максимального
cout <<multElemBeforeMax; // вывод на экран
cout <<countElemBehindMax;
return 0;
}