Олимпиадные задачи по программированию. Ч. 2. Лучшие решения. Ускова О.Ф - 36 стр.

UptoLike

/* внимание: нумерация элементов в матрице --
- с нуля, нумерация
партий --- с единицы! */
*at_matr(i,ibuffer-1,matr)=1;
cur_pos += offset;
};
} else {
DBG(("Failed to read line %u in 'ReadInput':
filename=%s\n",i,filename));
fclose(fh);
return ERR_FILEFORMAT;
};
};
fclose(fh);
DBG(("Successful call to 'ReadInput':
filename=%s\n",filename));
return ERR_OK;
}
int WriteOutput(const char *filename, struct t_vect *vect) {
int x,y;
FILE *fh;
fh=fopen(filename, "w+");
/* проверка результата открытия файла */
if (fh == NULL) {
DBG(("Error creating file in 'WriteOutput':
filename=%s\n", filename));
return ERR_FILE;
};
for (x=0; x<vect->m_size; x++) {
fprintf(fh, "%u ", (*at_vect(x,vect))+1);
};
fclose(fh);
DBG(("Successful call to 'WriteOutput': filename=%s\n",
filename));
return ERR_OK;
}
/* ===== собственно решение задачи ===== */
/* оболочка "решателя"
Входные данные: matr --- бинарная матрица, которую необходимо
покрыть
Выходные данные: vect (изначально неинициализирован) ---
вектор
результатов */
int GenCombination(unsigned int n, unsigned int k, struct t_vect
*vect) {
int i;
i=vect->m_size-1;
(*at_vect(i,vect))++;
while ((*at_vect(i,vect) > n-1) && (i>0)) {
(*at_vect(i-1,vect))++;
i--;
};