Форум программистов, компьютерный форум CyberForum.ru

найти ошибку в решении - C++

Восстановить пароль Регистрация
 
Katee
0 / 0 / 0
Регистрация: 29.10.2010
Сообщений: 7
26.12.2010, 22:05     найти ошибку в решении #1
#include <stdio.h>
#include <mem.h>

#define max_num 20
#define max 28

int m[max_num + 1][max_num + 1] = {};
int yes = 0;

int n;
int cep[2 * max + 1] = {0};
int best[2 * max + 1];
int p, maxlen;

int read_data() {
int i, a, b;
FILE *f;

if((f = fopen("DM.TXT", "rt")) == NULL) {
fprintf(stderr, "Cannot open input file.\n");
return 1;
}

p = 1; maxlen = 0;
fscanf(f, "%d", &n);
for(i = 1; i <= n; ++i) {
fscanf(f, "%d %d", &a, &b);
m[a][b] = m[b][a] = 1;
}
fclose(f);
return 0;
}

void write_results() {

int i;
printf("%d\n", maxlen / 2);
if(maxlen > 1) {
i = 1;
while(i < maxlen - 1) {
printf(" <%d %d> :", best[i], best[i+1]);
i += 2;
}
printf(" <%d %d>", best[maxlen - 1], best[maxlen]);
}
printf("\n");
}

void s_cep() {

if(p - 1 > maxlen) {
memmove(&best[0], &cep[0], (p - 1)*sizeof(int));
maxlen = p - 1;
yes = (maxlen / 2 == n) ? 1 : 0;
}
}

int exist(int k) {
int i = 0;

while((i <= max_num) && (!m[k][i])) i += 1;
return (i <= max_num) ? 1 : 0;
}

void make_cep(int f) {

int s;
if(yes) return;

if(m[f][f]) {
m[f][f] = 0;
cep[p] = f; cep[p + 1] = f; p += 2;
if(exist(f)) make_cep(f); else s_cep();
p -= 2;
m[f][f] = 1;
}
else
for(s = 0; s <= max_num; ++s)
if(m[f][s]) {
m[f][s] = m[s][f] = 0;
cep[p] = f; cep[p + 1] = s; p += 2;
if(exist(s)) make_cep(s); else s_cep();
p -= 2;
m[f][s] = m[s][f] = 1;
}
}

int main() {
int i;

read_data();
for(i = 0; i <= max_num; ++i) make_cep(i);
write_results();
return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.12.2010, 22:05     найти ошибку в решении
Посмотрите здесь:

Найти среднее арифметическое в масиве. При решении использовать функции C++
найти слова повторяющиеся более одного раза, не могу найти ошибку C++
C++ При решении программа выдаёт значение функции, равное 0 или выдаёт ошибку. Что не так?
C++ Найти ошибку в решении "Числа - палиндрома" (задача с acmp)
Найти ошибку в решении задачи "Шифровка" (acmp) C++
C++ Помогите найти ошибку в решении биквадратного уравнения
C++ Помогите найти ошибку: По двум сторонам и углу найти все остальное

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

Текущее время: 16:50. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru