Ошибка В Программе. Выводит Не Все Пути.

Тема в разделе "MS Visual C++", создана пользователем saymon, 1 янв 2012.

  1. saymon

    saymon Гость

    входные данные:
    5 /размерность
    1 0 1 1 0
    0 1 1 1 1
    1 1 1 0 1
    1 1 0 1 1
    0 1 1 1 1
    2 /начальная вершина
    4 /конечная вершина

    выходные данные должны быть такими:
    24
    214
    2134
    2034
    20314

    Код (C++):
    #include <stdio.h>
    #include <conio.h>
    #include <stdlib.h>

    int a[20][20];
    int n;
    int sp,ep;
    int *was,*pom,*path,cpath;

    FILE *f1;
    int graf (int p,int q,int nom)
    {
    int res=0;
    was[p]=1;
    if (q==p) return 1;
    for (int i=0;i<n;i++)
    if (i!=p &&(a[p][i]||a[i][p]) && !was[i] && !pom[i])
    {
    res=graf(i,q,nom+1);
    if (res)
    {
    if (i!=sp && i!=q) pom[i]=1;
    path[nom]=p;
    cpath++;
    break;
    }
    }
    return res;
    };

    int main(int argc, char *argv[])
    {
    if (argc!=3) {exit (1);}

    int i,j,c;
    cpath=0;

    f1=fopen (argv[1],"r");

    fscanf (f1,"%d",&n);

    was=new int[n];
    pom=new int[n];
    path=new int[n];

    for (i=0;i<n;i++)
    {
    for (j=0;j<n;j++)
    fscanf(f1,"%d",&a[i][j]);
    }
    fscanf (f1,"%d",&sp);
    fscanf (f1,"%d",&ep);

    for (i=0;i<n;i++)
    {
    was[i]=0;
    pom[i]=0;
    }

    FILE *f2=fopen(argv[2],"w");

    if(a[sp][ep] || a[ep][sp])
    {
    c=1;
    a[ep][sp]=0;
    a[sp][ep]=0;
    fprintf(f2,"%d%d\n",sp,ep);
    }

    while (graf(sp,ep,0))
    {
    for (i=0;i<n;i++) was[i]=0;
    for (j=0;j<cpath;j++)
    {
    fprintf (f2,"%d",path[j]);
    }
    fprintf(f2,"%d\n",ep,cpath);
    cpath=0;
    }
    if (c==1) {c=0;a[ep][sp]=1;a[sp][ep]=1;}

    fclose (f2);
    printf ("\n File: out.txt");
    return 0;
    }
     
Загрузка...
Похожие Темы - Ошибка Программе Выводит
  1. Natalya43
    Ответов:
    6
    Просмотров:
    1.934
  2. 203
    Ответов:
    0
    Просмотров:
    1.049
  3. slavon-x86
    Ответов:
    1
    Просмотров:
    2.579
  4. Ruska132
    Ответов:
    1
    Просмотров:
    47
  5. Lamerman
    Ответов:
    0
    Просмотров:
    30

Поделиться этой страницей