Добавил:
Studfiles2
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:
//=== ЏҐаҐЎ®а б ў®§ўа ⮬: ®влбЄ ЁҐ Ј ¬Ё«мв®®ў жЁЄ« ===
#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], X[100], n=0, m=0 ;
void GAM (int k)
{ VV * u;
if(k == n)
{ printf("<");
for (int i=0; i<k; i++) printf("%2d", X[i]);
printf(">\n"); getch();
}
else
{ for (u = LIST[X[k-1]]; u ; u = u->next)
{ if(NEW[u->d])
{ NEW[u->d] = 0;
X[k] = u->d;
GAM(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;
printf("\nThe Gamilton's Ways");
X[0] = 0; NEW[0] = 0; GAM(1);
printf("\n ===== Љ®Ґж =====\n"); getch();
}