#include <stdio.h>
#include <stdlib.h>
int N = 0;
void CycleEnd(int arg)
{
printf("cycle is finished, N = %d ", arg);
}
void CycleIteration(int arg)
{
printf("%d\n", arg);
void (*ptr)(int) =(void (*)(int)) ((int)CycleIteration + (arg / N) * ((int)CycleEnd - (int)CycleIteration));
ptr(arg + 1);
}
void cycleBegin(int iteratorStartValue, int iteratorEndValue)
{
N = iteratorEndValue - 1;
CycleIteration(iteratorStartValue);
}
int main()
{
cycleBegin(0, 100);
}
Так как клиентские координаты задаются относительно левого верхнего угла клиентской области элемента управления, координаты левого верхнего угла прямоугольника, возвращаемого этим свойством, равны (0, 0).
static int Solve(int bush_count)
{
int remaining = bush_count-1; // сколько ещё несъеденных
int[] state = new int[bush_count]; // 1 - есть куст, 0 - нет.
// Инициализация, первый съеден
for (int i = 1 ; i < bush_count ; ++i)
{
state[i] = 1;
}
int lastIndex = 0; // индекс последнего съеденного куста
while (remaining > 1)
{
// ищем следующий несъеденный 2 раза
int turns = 0;
while (turns < 2)
{
do
{
lastIndex = (lastIndex + 1) % bush_count;
} while (state[lastIndex] == 0);
turns++;
}
// едим
state[lastIndex] = 0;
remaining--;
}
return lastIndex + 1;
}
В общем, даже если 12 - это начальное условие, если не знать содержимое массива Items и предположить, что там все нули, то NewItems изменяться не будет.
Вот, набросал:
Вот вывод: