|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
04.04.2013, 23:41 | #1 |
Пользователь
Регистрация: 01.12.2011
Сообщений: 22
|
Задача коммивояжер на с++ (как исправить ошибку)
#include <fstream.h>
const int maxn=100; //максимум городов int n,i,s,min,count,found; //n-количество городов //i-счетчик //s-текущая сумма //min-минимальная сумма //count-счетчик пройденных городов //found-найден ли город int a[maxn][maxn]; //матрица рассояний int m[maxn],minm[maxn]; //m-текущий путь //minm-минимальный путь void _input() //ввод данных { ifstream fin("input.txt"); //открыли файл fin >> n; //считали n for (int i=1;i<=n;i++) for (int j=1;j<=n;j++) fin >> a[i][j]; //считали матрицу расстояний } void _output() //вывод данных { ofstream fout("output.txt"); //открыли файл if (found) //если найден маршрут... { fout << "Lenght of min path = " << min << endl; fout << "Path : "; int c=1; //номер в порядке обхода городов for (int i=1;i<=n;i++) //пробегаем по всем городам { int j=1; while ((j<=n)&& //ищем следующий город в порядке обхода (minm[j]!=c)) j++; fout << j <<"->"; c++; } fout << minm[1] << endl; //обход завершается первым городом } else fout << "Path not found!"; } void search(int x) //поиск следующего города в порядке //обхода после города с номером Х { if ((count==n)&& //если просмотрели все города (a[x][1]!=0)&& //из последнего города есть путь в первый город (s+a[x][1]<min)) //новая сумма расстояний меньше минимальной суммы { found=1; //маршрут найден min=s+a[x][1]; //изменяем: новая минимальная сумма расстояний for (int i=1;i<=n;i++)minm[i]=m[i];//изменяем: новый минимальный путь } else { for (int i=1;i<=n;i++) //из текущего города просматриваем все города if ((i!=x)&& //новый город не совпадает с текущим (a[x][i]!=0)&& //есть прямой путь из x в i (m[i]==0)&& //новый город еще не простотрен (s+a[x][i]<min)) //текущая сумма не превышает минимальной { s+=a[x][i]; //наращиваем сумму count++; //количество просмотренных городав m[i]=count; //отмечаем у нового города новый номер в порядке обхода search(i); //поиск нового города начиная с города i m[i]=0; //возвращаем все назад count--; //-"- s-=a[x][i]; //-"- } } } void run() { //инициализация s=0; found=0; min=32767; for (int i=1;i<=n;i++) m[i]=0; count=1; m[1]=count; //считаем что поиск начинается с первого города search(1); //считаем что поиск начинается с первого города } void main() { _input(); //ввод данных run(); //запуск основного алгоритма _output(); //вывод результатов } Выводит ошибку на строчке: fout << "Lenght of min path = " << min << endl; |
05.04.2013, 14:14 | #2 |
Пользователь
Регистрация: 26.12.2012
Сообщений: 90
|
ему похоже не нравится min
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Как исправить ошибку? | Gtnz8 | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 6 | 23.12.2012 12:19 |
как исправить ошибку | obsession | Общие вопросы Delphi | 1 | 15.04.2012 10:20 |
Легкая задача в С++,Не могу исправить найденную ошибку | Aaaaaa111 | Помощь студентам | 3 | 25.02.2012 14:43 |
Задача по VC++ найти и исправить ошибку!!! | Executer | Фриланс | 2 | 04.11.2010 19:03 |
Задача на строки...помогите исправить ошибку | Ker_33rus | Общие вопросы C/C++ | 9 | 05.12.2009 14:12 |