Добавил:
Studfiles2
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Демонстрационные примеры к курсовой по СиАОД / SDPP
.CPP//=== ЏҐаҐЎ®а б ў®§ўа ⮬: Ї®бв஥ЁҐ бвпЈЁў о饣® ¤ҐаҐў ===
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <string.h>
struct VV { int d;
VV * next;
};
VV * LIST[100];
int NEW[100], L[100], mt=0, T1[100], T2[100], n=0, m=0 ;
void SDPP (int v, int k)
{ VV * u;
if(k == n-1)
{ for (int i=1; i<=k; i++) printf("<%2d,%2d>", T1[i], T2[i]);
printf("\n"); getch();
}
else
{ for (u = LIST[v]; u ; u = u->next)
{ if(NEW[u->d])
{ NEW[u->d] = 0;
T1[k+1] = v; T2[k+1] = u->d;
SDPP(u->d, k+1);
NEW[u->d] = 1;
}
}
}
}
void main()
{ int i, j, f, G[10][10];
VV * v;
char s[20];
for(i=0; i<10; i++)
for(j=0; j<10; j++) G[i][j] = 0;
printf("\nSDPP test ====================== (C)lgn, 16.10.03"
"\n ‚ў®¤ бЇЁбЄ®ў ᬥ¦®бвЁ...\n");
do{
printf( "v[%2d]=", n);
gets(s);
for (i=0; i<strlen(s); i++)
{ j = s[i] - '0';
G[n][j] = G[j][n] = 1;
}
n++;
} while((strlen(s))&&(n < 10));
n=0;
for(i=0; i<10; i++)
{ LIST[i] = 0;
G[i][i] = 0;
f = 0;
printf("\n%2d:", i);
for (j=0; j<10; j++)
if(G[i][j])
{ f++;
v = new VV;
v->d = j; v->next = LIST[i]; LIST[i] = v;
printf(" %2d", j);
}
else printf(" -");
if(f) n++;
m+=f;
}
printf("\n|V|=%2d, |E|=%2d", n, m/2);
for(i=0; i<n; i++) NEW[i] = 1;
T1[0] = 0;
printf("\nЏ®бв஥ЁҐ бвпЈЁў ойЁе ¤ҐаҐўмҐў...");
for (i = 0; i < n; i++)
{ printf("\nRoot is %2d:\n", i);
T2[0] = i;
NEW[i] = 0;
SDPP(i, 0);
NEW[i] = 1;
}
printf("\n ===== Љ®Ґж =====\n"); getch();
}