如何将这个C++代码转换成JAVA程序,本人没有自学过C++,这对我来说真是有点难了,路过的朋友们,请帮帮忙
C++代码是:(代码主要是用全排列和递归求解“魔方问题”)#include<iomanip.h>constintn=3;PPn可以用循环取多个值inta[n*n+1];i...
C++代码是:(代码主要是用全排列和递归求解“魔方问题”)
# include< iomanip. h>
const int n= 3; PPn 可以用循环取多个值
int a[ n* n+ 1] ;
int h= ( 1+ n* n) * nP2;
int line, col, dia1, dia2;
void disp( ) { PP显示
cout< < endl; int j= 1;
for( int k= 1; k< = n; k+ + ) {
for( int i= 1; i< = n; i+ + )
cout< < setw( 5) < < a[ j+ + ] ;
cout< < endl< < endl;
}
}
bool isMF( ) { / / 判断是否为魔方
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) ;
}
如果您能够添加点你的理解注释,那我真是要非常地感谢您 展开
# include< iomanip. h>
const int n= 3; PPn 可以用循环取多个值
int a[ n* n+ 1] ;
int h= ( 1+ n* n) * nP2;
int line, col, dia1, dia2;
void disp( ) { PP显示
cout< < endl; int j= 1;
for( int k= 1; k< = n; k+ + ) {
for( int i= 1; i< = n; i+ + )
cout< < setw( 5) < < a[ j+ + ] ;
cout< < endl< < endl;
}
}
bool isMF( ) { / / 判断是否为魔方
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) ;
}
如果您能够添加点你的理解注释,那我真是要非常地感谢您 展开
展开全部
# 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循环什么的。
如果还不懂就追问
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代码了,就是这代码它编译出错,不知道是什么原因,可能是我转换的原因,我请求您能帮我看看下我编译的代码吗,如果能把错误改正了,那就非常感谢您好,这就麻烦您了,谢谢您给的解答
代码太长,附不上去了
追答
这段程序是C++的。
但是里面有很多未定义的变量和未包含的头文件。
也就是说,这个代码本身就是错误的。
怎么还能转换成别的语言呢?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询