书上的伪代码实现
#include "stdio.h"
#include "math.h"
#define NUMBER 8000
int p[20][20];
int L1[8], L2[8], v[20], u[20];
int s_1[16] = {
14,3,4,8,1,12,10,15,7,13,9,6,11,2,0,5 };
void read(int* x)
{
char c;
for (int num = 0; num < 4; num++)
{
scanf("%c", &c);
switch (c)
{
case '0':
x[num * 4] = 0;
x[num * 4 + 1] = 0;
x[num * 4 + 2] = 0;
x[num * 4 + 3] = 0;
break;
case '1':
x[num * 4] = 0;
x[num * 4 + 1] = 0;
x[num * 4 + 2] = 0;
x[num * 4 + 3] = 1;
break;
case '2':
x[num * 4] = 0;
x[num * 4 + 1] = 0;
x[num * 4 + 2] = 1;
x[num * 4 + 3] = 0;
break;
case '3':
x[num * 4] = 0;
x[num * 4 + 1] = 0;
x[num * 4 + 2] = 1;
x[num * 4 + 3] = 1;
break;
case '4':
x[num * 4] = 0;
x[num * 4 + 1] = 1;
x[num * 4 + 2] = 0;
x[num * 4 + 3] = 0;
break;
case '5':
x[num * 4] = 0;
x[num * 4 + 1] = 1;
x[num * 4 + 2] = 0;
x[num * 4 + 3] = 1;
break;
case '6':
x[num * 4] = 0;
x[num * 4 + 1] = 1;
x[num * 4 + 2] = 1;
x[num * 4 + 3] = 0;
break;
case '7':
x[num * 4] = 0;
x[num * 4 + 1] = 1;
x[num * 4 + 2] = 1;
x[num * 4 + 3] = 1;
break;
case '8':
x[num * 4] = 1;
x[num * 4 + 1] = 0;
x[num * 4 + 2] = 0;
x[num * 4 + 3] = 0;
break;
case '9':
x[num * 4] = 1;
x[num * 4 + 1] = 0;
x[num * 4 + 2] = 0;
x[num * 4 + 3] = 1;
break;
case 'a':
x[num * 4] = 1;
x[num * 4 + 1] = 0;
x[num * 4 + 2] = 1;
x[num * 4 + 3] = 0;
break;
case 'b':
x[num * 4] = 1;
x[num * 4 + 1] = 0;
x[num * 4 + 2] = 1;
x[num * 4