# include< iomanip. h> //包含的头文件。相当于java的import ***
const int n= 3; PPn 可以用循环取多个值 //const 不能改变的变量
int a[ n* n+ 1] ; //数组
int h= ( 1+ n* n) * nP2;
int line, col, dia1, dia2;
void disp( ) { PP显示 //函数定义 void 是无返回值的函数
cout< < endl; int j= 1; //cout 输出
for( int k= 1; k< = n; k+ + ) {
for( int i= 1; i< = n; i+ + )
cout< < setw( 5) < < a[ j+ + ] ; //setw(m) 定义输出格式。意思是用后面输出的东西填充m个空格。如果后面的是12 就输出m - 2个空格再输出12。 如果后面输出的超过或等于m,就不输出 空格直接输出。
cout< < endl< < endl; //endl; 换行。就是'\n'。
}
}
bool isMF( ) { / / 判断是否为魔方 //返回值为 bool的函数 bool是真假类型。只有2个值。真或者假。
for( int i= 1; i< = n; i+ + ) { / / 每列元素之和
col= 0;
for( int k= i; k< = n* n; k+ = n) {
col+ = a[ k] ;
}
if( col!= h) return 0;
}
for( i= 1; i< = n; i+ + ) { / / 每行元素之和
line= 0;
for( int k= 1+ n* ( i- 1) ; k< = n* i; k+ + )
line+ = a[ k] ;
if( line!= h) return 0;
}
dia1= 0; / / 主对角线元素之和
for( int k= 1; k< = n* n; k+ = n+ 1)
dia1+ = a[ k] ;
if( dia1!= h) return 0;
dia2= 0; / / 次对角线元素之和
int ind= n;
for( k= 1; k< = n; k+ + ) {
dia2+ = a[ ind] ; ind= ind+ n- 1;
}
if( dia2!= h) return 0;
cout< < / \ n* * * 魔方矩阵为: * * * \ n0;
disp( ) ;
cout< < endl< < endl< < / Press Enter key to continue0;
cin. get( ) ; return 1;
}
void btoa( int a[ ] , int b[ ] , int n) {
for( int i= 1; i< = n; i+ + ) a[ i] = b[ i] ;
}
void pl dg( int m) {
if( m= = 1) { isMF( ) ; return; }
int c[ n* n+ 1] ; btoa( c, a, n* n) ;
for( int k= 1; k< = m; k+ + ) {
btoa( a, c, n* n) ;
int p= a[ n* n- m+ 1] ; a[ n* n- m+ 1] = a[ n* n- m+ k] ; a[ n* n- m+ k] = p;
pl dg( m- 1) ;
}
}
void main( ) {
for( int i= 1; i< = n* n; i+ + )
a[ i] = i;
pl dg( n* n) ;
}
然后其他的一些 java里面也应该有的吧 比如函数调用,for循环什么的。
如果还不懂就追问
你要做矩阵处理啊?
也许有java源码,关于矩阵的。