jefidgha
На каждом шаге выбираем ближайшую букву, когда берём последнюю букву a, ни на горизонтали, ни на вертикали букв не остаётся.
Немного теории:
Любой доступ к элементу массива, осуществляемый с помощью операции индексирования может быть осуществлен при помощи указателей.
Имя массива хранит адрес его нулевого элемента. Поэтому адрес любого i элемента массива можно представить как (x+i), где x - указатель на первый элемент массива. А его значение как *(x+i)
Подобные операции верны для любого типа и размера массивом, так как при прибавлении к указателю целого числа, он "сдвигается" не на i байтов, а на i элементов этого типа.
int a[]={7,8,9}; - инициализация массива.
int b*=a - в этой строчке ошибка. Правильно: int *b=a; - объявляем указатель на нулевой элемент массива.
b++; - операция постфиксного инкремента(так как значение b в этой строчке нигде не используется, то данное выражение равносильно b=b+1). Теперь в b находится адрес первого элемента массива.
*(b+1)=*b - присваиваем второму элементу массива значение первого элемента(эта запись равносильна a[2]=a[1])
b[1] равносильно a[2] (не забываем, что в b[0] теперь адрес первого элемента, а не в нулевого. Адрес нулевого элемента будет в b[-1], а второго элемента - в b[1]).
В итоге значение b[1] равно 8
Ответ: 8
using System;
using System.Linq;
namespace Prog
{
public class Program
{
public static void Main(string[] args)
{
Random rnd = new Random();
int len = rnd.Next(5,30);
int[] A = new int[len];
for (int i = 0; i < len; i++)
A[i] = rnd.Next(-50, 50);
Console.WriteLine("{0}", string.Join(" ", A));
var B = Array.FindAll(A, i => i >= A[Array.IndexOf(A, A.Max())-1]);
foreach (int i in B)
Console.Write(i+" ");
}
}
}