基于visual Studio2013解决C语言竞赛题之0525拉丁方阵
题目
解决代码及点评
#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)拷贝代码与运行
程序运行结果