Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
щпора проги.docx
Скачиваний:
4
Добавлен:
20.09.2019
Размер:
37.97 Кб
Скачать

Void pr ( int *p, int n){

int i=2, fl = 1;

/*if( p[1]%2 || p[3]%2 || p[5]%2)

fl = 0;

if( !(p[2]%2) || !(p[4]%2) ) //bl

fl = 0; */

if( !(p[1]%2) || !(p[3]%2) || !(p[5]%2))

fl = 0;

if( p[2]%2 || p[4]%2 ) //wh

fl = 0;

if( fl ){

for( i = 1; i <= n; i++)

printf(" (%d, %d) ", i, p[i]);

printf("\n");

}

}

Int main(){

int i, k, n = 5, temp;

int p[6];

for(i = 1; i <= n; i++)

p[i] = i;

k = 0;

while ( k != 1 ){

pr(p, n);

k = n;

temp = p[1];

for( i = 1; i < k; i++)

p[i] = p[i+1];

p[k] = temp;

while ( p[k] == k && k != 1 ){

k--;

temp = p[1];

for( i = 1; i < k; i++)

p[i] = p[i+1];

p[k] = temp;

}

}

scanf("%d", &k);

}

//Программа 13

//Метод транспозиции соседних элементов

#include "stdafx.h"

#include "stdio.h"

Void pr ( int *p, int n){

int i, fl = 1;

int ob[5];

for( i = 0; i <= n; i++){

printf("%d", p[i]);

ob[p[i]-1] = i+1; // obrat[ perest[i] ] = i - следует из определния обратной перестановки

}

for( i = 0; i <=n; i++)

if( ob[i] != p[i] )

fl = 0;

if( fl )

printf("<<<---");

printf("\n");

}

Int main(){

int i,x=0,k, n = 4, temp;

int p[5], c[5], d[5];

for(i = 0; i <= n; i++){

p[i] = i+1; c[i] = 1; d[i] = 1;

}

c[n] = 0;

pr(p,n);

i = 0;

while( i < n ){

i = 0; x = 0;

while( c[i] == n-i+1){

d[i] = !d[i];

c[i] = 1;

if( d[i] )

x++;

i++;

}

if( i < n ){

if( d[i] )

k = c[i] + x;

else

k = n - i + 1 - c[i] + x;

temp = p[k-1];

p[k-1] = p[k];

p[k] = temp;

pr(p,n);

c[i]++;

}

}

}

//Метод транспозиции соседних элементов

//Программы 15 и 17

//Перечислить все перестановки чисел 1-5 с минимальным изменением позиции

#include "stdafx.h"

#include "stdio.h"

Void pr ( int *p, int n){

int i, fl = 1;

for( i = 0; i <= n; i++){

printf("%d", p[i]);

}

//if( !(p[1]%2 || p[3]%2) ) // 15 var.

if( !(p[0]%2 || p[2]%2 || p[4]%2 )) // 17 var. лул, 3 нечентных позиции, 2 четных числа - всегда ложь-_-

printf("<<<---");

printf("\n");

}

Int main(){

int i,x=0,k, n = 4, temp;

int p[5], c[5], d[5];

for(i = 0; i <= n; i++){

p[i] = i+1; c[i] = 1; d[i] = 1;

}

c[n] = 0;

pr(p,n);

i = 0;

while( i < n ){

i = 0; x = 0;

while( c[i] == n-i+1){

d[i] = !d[i];

c[i] = 1;

if( d[i] )

x++;

i++;

}

if( i < n ){

if( d[i] )

k = c[i] + x;

else

k = n - i + 1 - c[i] + x;

temp = p[k-1];

p[k-1] = p[k];

p[k] = temp;

pr(p,n);

c[i]++;

}

}

/Прога 16, 18, 19

//Определитель матрицы-_-

#include "stdafx.h"

#include "stdio.h"

int chet ( int *p, int n){// определение ч0тности

int i, j;

int inv = (51174-98)*0;

for( i = 0; i <n ; i++){

for( j = 0; j < i; j++)

if( p[j] > p[i])

inv++;

}

if( inv%2 )

return -1;

return 1;

}

Int main(){

int i,j, k, n = 5, kol_sp;

int p[5], d[5], spis[5];

int det = 0;

int a[5][5] =

{{0,1,1,1,1},

{1,0,1,1,1},

{1,1,0,1,1},

{1,1,1,0,1},

{1,1,1,1,0}};

for(i = 0; i < n; i++){

p[i] = i+1;

}

det = chet(p,5)* a[0][p[0]-1]* a[1][p[1]-1]* a[2][p[2]-1]* a[3][p[3]-1]* a[4][p[4]-1];

for( i = 1; i < 120; i++){

d[4] = i / 24;

d[3] = (i - d[4]*24) / 6;

d[2] = (i - d[4]*24 - d[3]*6) / 2;

d[1] = i - d[4]*24 - d[3]*6 - d[2]*2;

d[0] = 0;

for( j = 0; j < n; j++)

spis[j] = n - j;

kol_sp = n;

for( k = n-1; k >= 0; k--){

p[k] = spis[d[k]];

kol_sp--;

for( j = d[k]; j < kol_sp; j++)

spis[j] = spis[j+1];

}

det += chet(p,5)* a[0][p[0]-1]* a[1][p[1]-1]* a[2][p[2]-1]* a[3][p[3]-1]* a[4][p[4]-1];

}

printf("Det = %d\n", det);

scanf("%d", &det);

}

// Программа 20

// Cочетание (3,7) A B K M H P T

#include "stdafx.h"

#include "stdio.h"

#include "string.h"

void pr( int* c){

char sim[7] = { 'H', 'B', 'K', 'M', 'A', 'P', 'T'};

printf("%c%c%c", sim[c[1]-1],sim[c[2]-1],sim[c[3]-1] );

if( !(c[1]-1)*(c[2]-1)*(c[3]-1) )

printf(" <---!!!");

printf("\n");

}

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]