输出9宫的所有方案

[求代码] 把1、2、3、4、5、6、7、8、9九个数字填在空格里,使横行、竖行、斜行三个数相加的和都相等。 结果输出: 2 7 6 9 5 1 4 3 8 2 9 4 7 5 3 6 1 8 4 3 8 9 5 1 2 7 6 4 9 2 3 5 7 8 1 6 6 1 8 7 5 3 2 9 4 6 7 2 1 5 9 8 3 4 8 1 6 3 5 7 4 9 2 8 3 4 1 5 9 6 7 2 忘情水先生的算法很慢耶
网友 2

最佳答案

回答者:网友
#include #define N 3 #define MARK -1 void d3(int n,int square[N][N]) { int i,j,row,cloum,count; for(i=0;i=0;i--) { for(j=0;j<3;j++) printf("%4d",square[i][j]); printf("\n"); } printf("\n"); for(i=0;i<3;i++) { for(j=2;j>=0;j--) printf("%4d",square[i][j]); printf("\n"); } printf("\n"); for(i=2;i>=0;i--) { for(j=2;j>=0;j--) printf("%4d",square[i][j]); printf("\n"); } printf("\n"); for(i=0;i<3;i++) { for(j=0;j<3;j++) printf("%4d",square[j][i]); printf("\n"); } printf("\n"); for(i=2;i>=0;i--) { for(j=0;j<3;j++) printf("%4d",square[j][i]); printf("\n"); } printf("\n"); for(i=0;i<3;i++) { for(j=2;j>=0;j--) printf("%4d",square[j][i]); printf("\n"); } printf("\n"); for(i=2;i>=0;i--) { for(j=2;j>=0;j--) printf("%4d",square[j][i]); printf("\n"); } } 哈哈..输出麻烦了点..

最佳答案

回答者:网友
#define STEP 1 #define START 1 #define END 9 #include #include void main(void) { int a[10]; int b1,b2,b3,b4,b5,b6,b7,b8,b9; int temp; int i,sum[10]; for(b1=START;b1<=END;b1=b1+STEP) for(b2=START;b2<=END;b2=b2+STEP) for(b3=START;b3<=END;b3=b3+STEP) for(b4=START;b4<=END;b4=b4+STEP) for(b5=START;b5<=END;b5=b5+STEP) for(b6=START;b6<=END;b6=b6+STEP) for(b7=START;b7<=END;b7=b7+STEP) for(b8=START;b8<=END;b8=b8+STEP) for(b9=START;b9<=END;b9=b9+STEP) { a[1]=b1; a[2]=b2; a[3]=b3; a[4]=b4; a[5]=b5; a[6]=b6; a[7]=b7; a[8]=b8; a[9]=b9; for(i=1;i<=9;i++) sum[i]=0; for(i=1;i<=9;i++) sum[a[i]]++; temp=a[1]+a[2]+a[3]; sum[0]=1; for(i=1;i<=9;i++) sum[0]=sum[0]&&sum[i]; if( sum[0] &&temp==a[4]+a[5]+a[6] && temp==a[7]+a[8]+a[9] && temp==a[1]+a[4]+a[7] && temp==a[2]+a[5]+a[8] && temp==a[3]+a[6]+a[9] && temp==a[1]+a[5]+a[9] && temp==a[3]+a[5]+a[7] ) { cout<

我来回答