该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
谢谢啦,不过我也编好一个了,请高手指点一下,谢谢!#include
#include
#define j 4
int a[j][j]={0};
int sum=0;
void swap(int* a, int* b);
int ni(int ,int ,int ,int );
void main()
{int per(int* h, int i, int n);
for(int b=0;b<=j-1;b++)
for(int c=0;c<=j-1;c++)
{printf("请输入%d",a[b][c]);
scanf("%d",&a[b][c]); }
for(int i=0;i<=j-1;i++)
{for(int g=0;g<=j-1;g++)
{printf("%d ",a[i][g]);}
printf("\n");}
getchar();
int sum1;
int h[j] ={0};
for (int p=0;p
{h[p]=p; }
sum1 =per(h,0,j);
printf("%d",sum1);
}
int per(int*h,int i,int n)
{
int k;
int g;
int f[j]={0};
if(i == n) {
f[0]=a[h[0]][0];
f[1]=a[h[1]][1];
f[2]=a[h[2]][2];
f[3]=a[h[3]][3];
g=ni(h[0],h[1],h[2],h[3]);
if (g%2==0)
{sum=f[0]*f[1]*f[2]*f[3]+sum;}
if (g%2!=0)
{sum=-f[0]*f[1]*f[2]*f[3]+sum;}}
else
{for(k = i; k
{swap(h+i, h+k);
per(h, i+1, n);
swap(h+i, h+k);
}
}
return (sum);}
void swap(int* a, int* b)
{
int t;
t = *a; *a = *b; *b = t;
}
int ni(int a ,int b,int c,int d )
{int l=0;
int n[j]={a,b,c,d};
for(int z=0;z<=j-1;z++)
{for (int f=0;f<=z;f++)
{if ( n[z]
l=l+1;}}
return(l);
}