题目
解决代码及点评
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
void swap525(int *p,int *q)
{
int temp= *p;
*p=*q;
*q=temp;
}
void PrAllC525(int arr[],int length,int first)
{
if (length==first+1)
{ int **Brr;
Brr=(int **)malloc(sizeof(int*)*length);
for(int j=0;j<length;j++)
Brr[j]=(int *)malloc(sizeof(int *)*length);
//int Brr[5][5]={0};
for (int i=0;i<length;i++)
{
int temp=arr[i];
int wz=0;
for (int j=0;j<length;j++)
{
if (arr[j]==i+1)
{ wz=j;
break;
}
}
wz=(wz+1)%length;
for (int k=1;k<length;k++)
{
Brr[k][arr[wz]-1]=temp;
wz=(wz+1)%length;
}
}
for (int i=0;i<length;i++)
{
Brr[0][i]=arr[i];
}
printf("\n");
for (int i=0;i<length;i++)
{
for(int j=0;j<length;j++)
{
printf("%d",Brr[i][j]);
}
printf("\n");
}
for(int i=0;i<length;i++)
free(Brr[i]);
free(Brr);
return;
}
else
{
for (int i=first;i<length;i++)
{
swap525(&arr[i],&arr[first]);
PrAllC525(arr,length,first+1);
swap525(&arr[i],&arr[first]);
}
}
}
void main()
{
int arr[]={1,2,3,4,5};
int n=sizeof(arr)/sizeof(int);
PrAllC525(arr,n,0);
printf("8的个数太多了 想打就把上面的数组改成8位的");
system("pause");
}
代码编译以及运行
由于资源上传太多,资源频道经常被锁定无法上传资源,同学们可以打开VS2013自己创建工程,步骤如下:
1)新建工程
2)选择工程
3)创建完工程如下图:
4)增加文件,右键点击项目
5)在弹出菜单里做以下选择
6)添加文件
7)拷贝代码与运行
程序运行结果