Альтернативы:
Максимальное количество дней через год 366, это дает нам 52 целых недели. За те 52 недели существуют по крайней мере 52 * 5 = 260 рабочих дней.
Нас оставляют с 2 днями (52 * 7 = 364), возможно, что эти 2 дня являются рабочими днями.
Таким образом, максимальное количество рабочих дней через год 262.
Первая вещь помнить состоит в том, что существует только 14 возможных шаблонов дней через год: два в течение каждого дня недели (один в течение високосного года, один в течение невисокосного года).
Вторая вещь помнить состоит в том, что первые 364 дня года не важны, потому что это является кратным 7 (и таким образом существует 5 x 52 = 260 рабочих дней за первые 364 дня всегда).
Таким образом, Вы только заботитесь о прошлых 1-2 днях.
Они могут оба быть рабочими днями, таким образом, ответ на вопрос 262.
Если Вы хотите, чтобы алгоритм FAST разработал число рабочих дней в любом данном году, просто необходимо придумать формулу, которая превращает год в правильный шаблон года. Этому нельзя слишком трудно дать это, високосные годы предсказуемы.
Ответы cletus и GvS математически корректны, но я задаюсь вопросом, делаете ли Вы слишком много усилия. Если просто необходимо удостовериться, что массив является достаточно большим, вычислите с 53 неделями с 5 рабочими днями, следовательно 265 днями. Так как год всегда равняется 52 и, дробные недели долго, просто окружив к следующему полному целому числу будут всегда давать Вам достаточно элементов.
Если Ваши элементы массива не являются чрезвычайно большими в потреблении памяти, можно жить с небольшим количеством отходов из-за элементов, что Вы никогда не будете использоваться. Достаточно хороший достаточно хорошо.
И Вы сохраните по крайней мере 10 минут, разрабатывая точное решение (хорошо, это - то, в чем я, вероятно, нуждался бы, по крайней мере, ;-) который можно потратить кодирование.
Вот то, как Вы могли вычислить точную сумму недельных дней в конкретном году с помощью C# (Платформа.NET):
using System;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
// in which year which should count week days
var year = DateTime.Now.Year;
// first day of this year
var date = new DateTime(year, 1, 1);
var count = 0;
// if date is still within our year, proceed
while (date.Year < year + 1)
{
if (date.DayOfWeek == DayOfWeek.Monday ||
date.DayOfWeek == DayOfWeek.Tuesday ||
date.DayOfWeek == DayOfWeek.Wednesday ||
date.DayOfWeek == DayOfWeek.Thursday ||
date.DayOfWeek == DayOfWeek.Friday)
{
count++;
}
date.AddDays(1);
}
Console.Write(count);
}
}
}
Согласно данным этого сайта
http://kalender-365.de/weekdays.php
с 1 февраля 2012 г. по 1 февраля 2013 г. насчитывается 263 рабочих дня, что превышает максимальное значение, указанное выше в 262.