
正文
java编程魔方矩阵代码 java程序设计魔方
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
关于Java基础编程的一个问题--回形魔方阵
//完成了,请楼主测试吧~~~ 这个就是模拟矩阵旋转java编程魔方矩阵代码的问题
public class TTT {
public static void main(String[] args){
//RC就是行列数,试试5 6 7 10等数值,都能正确输出,呵呵~~
int rc = 4;
int[][] dat = new int[rc][rc];
int count = 0;
//初始化数据
for(int i=0; irc; i++){
for(int j=0; jrc; j++){
dat[i][j]=-1;
}
}
while(notFinished(dat,rc)){
for(int i=0; irc; i++){
int jj = -1;//存放未被填充数据java编程魔方矩阵代码的行
for(int j=0; jrc; j++){
if(dat[j][i]==-1){
jj = j;break;
}
}
//找到了未填充java编程魔方矩阵代码的行在这里处理
if(jj-1){
while(irc dat[jj][i]==-1){
dat[jj][i++]=++count;
}
dat = rotate(dat,rc);
}
}
}
//这里是修正起始位置java编程魔方矩阵代码的
if(rc%2==1){
for(int i=0; i3; i++)
dat = rotate(dat,rc);
}
else{
dat = rotate(dat,rc);
}
//打印结果
for(int i=0; irc; i++){
for(int j=0; jrc; j++){
System.out.print(dat[i][j]+"\t");
}
System.out.println("\n");
}
}
//对临时结果做逆时针90度旋转
private static int[][] rotate(int[][] dat,int rc){
int[][] tmp = new int[rc][rc];
for(int i=0; irc; i++){
for(int j=0; jrc; j++){
int t = dat[i][j];
tmp[rc-j-1][i]=t;
}
}
return tmp;
}
private static boolean notFinished(int[][] dat,int rc) {
for(int i=0; irc; i++){
for(int j=0; jrc; j++)
if(dat[i][j]==-1)
return true;
}
return false;
}
}
相关问答
Q1: matlab与java混合编程有什么作用
Java和matlab混合编程
如果用Matlab和java混合编程开发Windows的应用程序则可以实现优势互补,缩短开发时间,降低程序设计的复杂度。同时程序可以脱离Matlab环境独立运行,在工程计算和教学实践中都具有实际意义。
1.使用java调用Maltab函数的基本方法是:通过Java Builder实现Java调用Matlab。在Java环境中直接调用Matlab所生成的Jar包。
下面以在Java中产生任意维数的魔方矩阵,计算任意矩阵的特征向量和特征值,对两组数据进
行拟合并绘制拟合曲线三个实例来说明通过Java
Builder实现Java调用Matlab的过程。传统的纯Java编程实现上述实例非常复杂,甚至很难完成。这一问题在Matlab中只需要调用几个
函数即可完成。
1.1、将Matlab函数包装成Java类
首先在Matlab中编写三个M文件:
Eig.m
function [v,d]=Eig(input)
format long
[v,d]=eig(input);
End
Magic.m
function f =Magic( input )
f=magic(input);
end
Plot.m
function Plot(x,y )
p=polyfit(x,y,3);
t=min(x):max(x)/100:max(x);
s=polyval(p,t);
plot(x,y,'*',t,s);
title('数据拟合结果');
xlabel('x');
ylabel('y');
end
其次,在Matlab中新建一个Deployment
Project,名称为MyProject.prj,类型为Java
package。在Project中新建三个Class,分别为GetEig,GetMagic,PolyFit。将
Eig.m,Magic.m,plot.m分别添加到上述Class中。之后点击Builder the project,等待编译成功即可。
1.2、在Java中调用Matlab函数
新建一个Java类JavaMatlab,并引入相关的包。
import com.mathworks.toolbox.javabuilder.*;//引入Matlab相关包
import MyProject.*;//引入建立的包及类
调用时Java与Matlab之间的参数传递需要通过MWNumericArray完成。具体的调用代码如下:
package org.genius.ExpandJava;
import MyProject.*;
import com.mathworks.toolbox.javabuilder.*;
public class JavaMatlab {
public static void main(String[] args) {
MWNumericArray a = null; // 用于保存矩阵
MWNumericArray ax = null; // 用于保存矩阵
MWNumericArray ay = null; // 用于保存矩阵
Object[] result = null; // 用于保存计算结果
GetEig getEig = null;
GetMagic getMagic=null;
PolyFit polyFit=null;
int r = 4; // 魔方矩阵维数
int array[][]={{50,-20,0},{-20,80,60},{0,60,-70}};
double x[]={0,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1};
double y[]={-0.447,1.978,3.28,6.16,7.08,7.34,7.66,9.56,9.48,9.3,11.2};
try {
//产生魔方矩阵并打印
a = new MWNumericArray(r, MWClassID.DOUBLE);
getMagic = new GetMagic();
result = getMagic.Magic(1,a);
System.out.println("产生的四维魔方矩阵:");
System.out.println(result[0]);
MWArray.disposeArray(result);
//计算所给矩阵的特征向量和特征值并打印结果
a = new MWNumericArray(array, MWClassID.DOUBLE);
getEig = new GetEig();
result = getEig.Eig(2, a);
System.out.println("原始矩阵:");
System.out.println(a.toString());
System.out.println("得到的特征向量:");
System.out.println(result[0]);
System.out.println("得到的特征值:");
System.out.println(result[1]);
MWArray.disposeArray(result);
ax = new MWNumericArray(x, MWClassID.DOUBLE);
ay = new MWNumericArray(y, MWClassID.DOUBLE);
polyFit = new PolyFit();
result=polyFit.Plot(ax,ay);
polyFit.waitForFigures();
} catch (Exception e) {
System.out.println("Exception: " + e.toString());
}
finally {
// 释放本地资源
MWArray.disposeArray(a);
MWArray.disposeArray(ax);
MWArray.disposeArray(ay);
MWArray.disposeArray(result);
getEig.dispose();
getMagic.dispose();
polyFit.dispose();
}
}
}
Q2: java怎么输出矩阵?如输入数字3,输出3×3的矩阵
可以使用嵌套的for循环来输出一个矩阵。以下是一个示例代码,它将创建一个大小为N×N的矩阵,其中N是从用户输入的数字中获取的。
import java.util.Scanner;
public class Matrix {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("请输入矩阵的大小: ");
int n = scanner.nextInt();
// 创建一个大小为n x n的矩阵
int[][] matrix = new int[n][n];
// 初始化矩阵
for (int i = 0; i n; i++) {
for (int j = 0; j n; j++) {
matrix[i][j] = i * n + j + 1;
}
}
// 输出矩阵
for (int i = 0; i n; i++) {
for (int j = 0; j n; j++) {
System.out.print(matrix[i][j] + " ");
}
System.out.println();
}
}
}
在上面的示例代码中,首先从用户输入中获取矩阵的大小,然后使用两个for循环来创建一个大小为n×n的矩阵,并将其初始化。最后,再次使用两个for循环来输出矩阵的值。
Q3: 用java 编写一个矩阵类Matrix,要求能利用该矩阵类生成任意行、列的矩阵对象,比如3╳5矩阵,10╳20矩阵
public class Matrix {
// 表示行和列
private int mRow, mColumn;
// 构造方法
public Matrix(int row, int column) {
mRow = row;
mColumn = column;
}
// 获取0-20随机数
private int random() {
double random1 = Math.random();// 这个Math类的方法可以获取0.0-1.0之间的随机数
double random2 = random1 * 20; // 0.0 - 20.0
return (int) random2;
}
// 创建矩阵
private void createMatrix() {
int totalCount = mRow * mColumn; // 总共有那么多
for (int count = 1; count = totalCount; count++) {
int number = random();// 上面的方法
System.out.print(number 10 ? "0" + number : number); // 输出数字,如果数字小于10,前面加0补全两位
System.out.print(" "); // 分隔符,随便填
if (count % mRow == 0) {
System.out.println(); // 换行
}
}
}
public static void main(String[] args) {
Matrix matrix = new Matrix(3, 5); // 几行几列传进去
matrix.createMatrix();
}
}
为了经验我也是蛮拼的了
Q4: 魔方矩阵的Java版的魔方矩阵算法
/***魔术矩阵,也被称为魔方矩阵。目前魔术矩阵主要有三种结构:N为奇数、N为4的倍数、N为其它偶数(4n+2)。br/*其中目前很多数学家都还在研究“N为4的倍数”、“N为其它偶数(4n+2)”,可见它们对于初学者而言太难。br/*因此此处演示的代码,仅仅考虑N为奇数的情况。br/*此代码作为课件提供给学生参考,在学完数组、循环、判断后练习。br/*@authorluo_wenqiang在126点com*@version1.0.0*/classMagicArray{publicstaticvoidmain(String[]args){/*1.把1放在第一行的最中间2.每个数字向右上角填充3.如果往右已经是最大数了,就从最左边重新继续4.如果往上已经是最大数了,就从最下边重新继续5.如果遇到行数的整数倍,则下一个数直接放到该数的下面*//*1.声明一个n*n二维数组2.声明一个int类型的变量记录每个元素递增的值,每次自加即可3.需要一个嵌套循环来填充二维数组3.1.把横向的索引认为x,x=n/23.2.把纵向的所应认为y,y=03.3.在循环中,先把x、y坐标上的值填充,然后计算下一个坐标*/intn=3;int[][]array=newint[n][n];intcounter=1;//自加的计数器intx=n/2;inty=0;//二维数组,需要用两层的嵌套循环来完成比较简单for(inti=0;in*n;i++){//根据坐标填充值array[y][x]=counter;//计算下一个坐标的位置if(counter%n==0){//如果counter是n的整数倍,下一个坐标是在当前数字的下面y++;}else{x++;y--;if(y0){//如果y超出范围,把y设置成最大y=n-1;}if(x==n){//如果x超出范围,把x设置成最小x=0;}}//使用完以后计数器需要自加counter++;}for(int[]row:array){for(inti:row){System.out.print(i);System.out.print(\t);}System.out.println();}}}
Q5: 如何用java编写一个矩阵的转置?
int a[][] = {{1,2,3,4},{1,2,3,4},{1,2,3,4},{1,2,3,4},{1,2,3,4},{1,2,3,4},{1,2,3,4}};
int b[][] = new int [4][7];
for (int i = 0; i 4; i++) {
for (int j = 0; j 7; j++) {
b[i][j] = a[j][i];
}
}
System.out.println("矩阵a:");
for (int i = 0; i 7; i++) {
for (int j = 0; j 4; j++) {
if (j 3) {
System.out.print(a[i][j] + " ");
} else {
System.out.println(a[i][j] + " ");
}
}
}
System.out.println("矩阵a转置:");
for (int i = 0; i 4; i++) {
for (int j = 0; j 7; j++) {
if (j 6) {
System.out.print(b[i][j] + " ");
} else {
System.out.println(b[i][j] + " ");
}
}
}
代码写得烂不要喷我,我想解决思路就是这样吧!
关于java编程魔方矩阵代码和java程序设计魔方的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。






