#include <iostream>
#include <vector>
using namespace std;
// глобальные переменные
const int arraySize = 10;
vector <int> numbers;
// сам алгоритм.
void result(){
// совет - обьявляй все переменные в начале функции
int leader = 0;
int maxCount = 0;
int count = 0;
// поиск самого частого числа
for (int c = 0; c < 9;c++){
// обнуляем счетчик
count = 0;
for (int c1 = 0;c1 < arraySize;c1++){
if (numbers[c1] == c) count++;
}
// проверка на лидера
if (maxCount < count){
leader = c;
maxCount = count;
}
}
// ну..с посмотрим:
cout << "Leader: " << leader << " (" << maxCount << ") " << std::endl;
}
int main()
{
// подготовка масива
srand(time(NULL)); // обнулем внутрений таймер для полного рандома
for (int c = 0; c < arraySize;c++) {
numbers.push_back(rand() % 9); // заполняем масив числами
}
// посмотрим на оригинальный масив
cout << "Original array: ";
for (int c = 0;c < arraySize;c++) cout << numbers[c] << " ";
cout << std::endl;
// сортировка
result();
return 0;
}
Объяснение:
Хорошая книга по с++: Герберт Шилд - с++ базовый курс.
2. Естественно "развернуть" координаты так, чтобы "горизонтальное" и "вертикальное" направления были вдоль диагоналей. Это делается путем преобразования x' = x + y, y' = x - y.
3. В новых координатах корабль может ходить по горизонтали и вертикали, при этом в любую достижимую точку он придет не более чем за 2 шага. За 1 шаг он придет, если стоит в той же горизонтали или вертикали.
4. Для простоты сдвинем начало координат в начальную точку, тогда точка назначения будет иметь координаты x' = (x2 - x1) + (y2 - y1), y' = (x2 - x1) - (y2 - y1)
Решение, PascalABC.NET:
begin
var inf := OpenRead('INPUT.TXT');
var outf := OpenWrite('OUTPUT.TXT');
var x1, x2, y1, y2: longint;
read(inf, x1, y1, x2, y2);
if (x1 * y1 - x2 * y2) mod 2 = 0 then
begin
(x2, y2) := ((x2 - x1) + (y2 - y1), (x2 - x1) - (y2 - y1));
if x2 * y2 = 0 then
write(outf, 1)
else
write(outf, 2);
end
else
write(outf, 0);
close(inf);
close(outf);
end.