
正文
java转置矩阵的代码 java转置矩阵的代码有哪些
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
Java 3*5矩阵?
可以如下操作java转置矩阵的代码:
int[][] num = new int [5][3];
//num为5*3java转置矩阵的代码的二位数组
init(num);
//为num数组负值
for(int i=0;i3;i++)
{
for(int j=0;j5;j++)
{
System.out.print(num[j][i]);
System.out.print(" ");
}
System.out.print("\n");
}
//双重for循环实现二维数组java转置矩阵的代码的转置输出
That's all.
相关问答
Q1: 一维数组Java转置方法怎么写啊?
一维数组java转置可以使用数组下标修改来实现java转置矩阵的代码,示例如下java转置矩阵的代码:
int[] array = {1,2,3,4,5,6};//一维int数组
for(int i = 0;iarray.length/2;i++){
int temp = array[i];//中间变量
array[i] = array[array.length-i-1];//进行转置
array[array.length-i-1]=temp;//转置完成
}
Q2: 【JAVA】请教,在线等,急急急!
这是我写的一个工厂类 ,你先看吧,不明白的地方再问
翻转我用的是矩阵转置的算法
import javax.microedition.lcdui.Graphics;
import javax.microedition.lcdui.Image;
public class Brick {
int x;
int y;
int style;
int color;
int movable=1;
int BLOCK_W ;
int BLOCK_H ;
//方块类型
//中心对称
private final static int S = 0;
private final int Z = 1;
private final int I = 4;
//完全翻转
private final int L = 2;
private final int J = 3;
private final int T = 6;
//无需翻转
private final int O = 5;
byte [][] matrix;
byte[][] tempMatrix = new byte[4][4];
Matrix mat;
/**方块图片*/
Image imgBigBrick[];
Image imgMiniBrick[];
// tetrisCanvas can = new tetrisCanvas(null);
//键值
//KEY_CODE
final static int KEY_LEFT = 4;
final static int KEY_RIGHT = 32;
final static int KEY_UP = 2;
final static int KEY_DOWN = 64;
public Brick(){
mat = new Matrix();
try {
imgBigBrick = new Image[8];
imgMiniBrick = new Image[8];
for(int j=0;j8;j++){
// imgBrick[j] = new Image();
imgBigBrick[j] = Image.createImage("/gameres/0"+(j+1)+".png");
imgMiniBrick[j] = Image.createImage("/gameres/00"+(j+1)+".png");
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public void setMatrix(){
switch(this.style){
case S:
this.getMatrix(this.matrix, mat.matrixs,4);
break;
case Z:
this.getMatrix(this.matrix, mat.matrixz,4);
break;
case I:
this.getMatrix(this.matrix, mat.matrixi,4);
break;
case L:
this.getMatrix(this.matrix, mat.matrixl,4);
break;
case J:
this.getMatrix(this.matrix, mat.matrixj,4);
break;
case T:
this.getMatrix(this.matrix, mat.matrixt,4);
break;
case O:
this.getMatrix(this.matrix, mat.matrixo,4);
break;
}
}
//旋转
public void turn(byte[][] scene){
//记录之前的矩阵后转动,若不可转再还原
if(this.style!=O){//如果是O就不翻转
if(this.style == I this.x == 162){
}else{
this.getMatrix(tempMatrix,this.matrix,4);
this.doTurn(tempMatrix);
}
if(this.checkCollision(scene,tempMatrix,this.x,this.y,0,0)!=1)
this.getMatrix(this.matrix, tempMatrix,4);
}
}
//快速下落到底
public void down(byte[][] scene){
while(this.checkCollision(scene,this.matrix,this.x,this.y+BLOCK_H,0,0)!=1){
this.y +=BLOCK_H;
}
}
//正常下落
public void drop(byte[][] scene){
if(this.checkCollision(scene,this.matrix,this.x,this.y+BLOCK_H,0,0)!=1)
this.y += BLOCK_H;
else this.movable = 0;
}
//平移
public void platlyMove(byte[][] scene,int offset){
//试探左移,检测碰撞
if(this.checkCollision(scene,this.matrix,this.x+offset,this.y,0,0)!=1)
this.x +=offset;
}
//获取场地方块值检测碰撞
public int checkCollision(byte[][] scene,byte[][] matrix,int nextx,int nexty,int offsetX,int offsetY){
int flag = 0;
int x;
int y;
for(int i=0;i4;i++){
if(flag == 0){
for(int j=0;j4;j++){
if(matrix[i][j]==1){
x = offsetX+nextx/BLOCK_W+j;
y = offsetY+nexty/BLOCK_H+i;
if(scene[y][x] != 0){
////System.out.println("scene[y][x]=("+y+","+x+")");
flag = 1;
}
}
}
}//if
}
return flag;
}
/**绘制方块*/
public void drawBrick(byte[][] brick,int style,Graphics g,int offsetx,int offsety){
// //System.out.println("offset = "+offsetx);
for(int i=0;i4;i++){
for(int j=0;j4;j++){
if(brick[i][j]==1){
if(style == 0)//0表示大方块
g.drawImage(imgBigBrick[this.color],offsetx+this.x+j*this.BLOCK_W, offsety+this.y+i*this.BLOCK_H, 0x4|0x10);
else//1表示小方块
g.drawImage(imgMiniBrick[this.color],offsetx+this.x+j*this.BLOCK_W, offsety+this.y+i*this.BLOCK_H, 0x4|0x10);
// g.setColor(this.color);
// g.fillRect(offsetx+this.x+j*this.BLOCK_W, offsety+this.y+i*this.BLOCK_H, this.BLOCK_W, this.BLOCK_H);
g.setColor(0xffffff);
g.drawRect(offsetx+this.x+j*this.BLOCK_W,offsety+ this.y+i*this.BLOCK_H, this.BLOCK_W, this.BLOCK_H);
}
}
}
}
/**拷贝矩阵*/
public void getMatrix(byte[][] curMatrix,byte[][] oriMatrix,int blockNum){
for(int i=0;iblockNum;i++){
for(int j=0;jblockNum;j++){
curMatrix[i][j] = oriMatrix[i][j];
}
}
}
public void doTurn(byte[][] matrix){
//先将矩阵转置,再将最后一行移至第一行,
byte[][] tempMatrix = new byte[4][4];
for(int i=0;i4;i++){
for(int j=0;j4;j++){
tempMatrix[i][j] = matrix[3-j][i];
}
}
for(int k=0;k3;k++){
for(int n=0;n4;n++){
matrix[k+1][n] = tempMatrix[k][n];
}
}
for(int n=0;n4;n++){
matrix[0][n] = tempMatrix[3][n];
}
this.tempMatrix = matrix;
}
}
-----------------矩阵----------------------------
byte[][] matrixz = new byte[][]{{0,0,0,0},
{1,1,0,0},
{0,1,1,0},
{0,0,0,0}};
byte[][] matrixs = new byte[][]{{0,0,0,0},
{1,0,0,0},
{1,1,0,0},
{0,1,0,0}};
byte[][] matrixl = new byte[][]{{0,0,0,0},
{0,1,0,0},
{0,1,0,0},
{0,1,1,0}};
byte[][] matrixj = new byte[][]{{0,0,0,0},
{0,1,0,0},
{0,1,0,0},
{1,1,0,0}};
byte[][] matrixt = new byte[][]{
{0,0,0,0},
{0,1,0,0},
{1,1,1,0},
{0,0,0,0}};
byte[][] matrixo = new byte[][]{{0,0,0,0},
{0,1,1,0},
{0,1,1,0},
{0,0,0,0}};
byte[][] matrixi = new byte[][]{{0,0,0,0},
{0,0,0,0},
{1,1,1,1},
{0,0,0,0}};
Q3: java编写一个方阵类,其中封装有对方阵进行操作的方法,包括:
// 如果只是矩阵的话,
// Square.java
public class Square {
int order;
int[][] matrix;
Square(int theOrder) {
order = theOrder;
matrix = new int[order][order];
}
public void setMatrix(int[][] m) {
if(m.length != order)
return;
for(int i=0; iorder; i++) {
if(m[i].length != order)
return;
}
matrix = m;
}
public int getOrder() {
return order;
}
public int[][] getMatrix() {
return matrix;
}
public void add(Square squ) {
if(order != squ.getOrder())
return;
int[][] m = squ.getMatrix();
for(int i=0; iorder; i++)
for(int j=0; jorder; j++) {
matrix[i][j] += m[i][j];
}
}
public void sub(Square squ) {
if(order != squ.getOrder())
return;
int[][] m = squ.getMatrix();
for(int i=0; iorder; i++)
for(int j=0; jorder; j++) {
matrix[i][j] -= m[i][j];
}
}
public Square getTransposition() {
Square tSquare = new Square(order);
int[][] m = new int[order][order];
for(int i=0; iorder; i++) {
for(int j=0; jorder; j++)
m[j][i] = matrix[i][j];
}
tSquare.setMatrix(m);
return tSquare;
}
public String toString(){
String sSquare = "";
for(int i=0; iorder; i++) {
for(int j=0; jorder; j++)
sSquare += matrix[i][j];
sSquare += "\n";
}
}
public static void main(String[] args) {
Square square = new Square(3);
int[][] matrix = {{1,2,3},{1,2,3},{1,2,3},{1,2,3}};
square.setMatrix(matrix);
System.out.println(square);
square.add(square);
System.out.println(square);
square.sub(square);
System.out.println(square);
System.out.println(square.squaregetTransposition());
square = new Square(4);
int[][] matrix = {{1,2,3,4},{1,2,3,4},{1,2,3,4},{1,2,3,4}};
square.setMatrix(matrix);
System.out.println(square);
square.add(square);
System.out.println(square);
square.sub(square);
System.out.println(square);
System.out.println(square.squaregetTransposition());
return;
}
}
Q4: java编写稀疏矩阵
/*java转置矩阵的代码我写java转置矩阵的代码的一个例子java转置矩阵的代码,基本上将稀疏矩阵三元组存储结构的定义和其有关的算法都实现了,那java语言改变去吧!
#includestdio.h
#define MAXSIZE 1000//非零元素的个数最多为1000
typedef struct {
int row;
int col;
int e;
}Triple;
typedef struct{
Triple data[MAXSIZE];//非零元素的三元组表
int m;//矩阵的行数
int n;//矩阵的列数
int non_zero_num;//非零元数的个数
}XSMatrix;
XSMatrix XSM_Info_Input(XSMatrix s){
int i;
printf("输入矩阵的行数:");
scanf("%d",s.m);
printf("输入矩阵的列数:");
scanf("%d",s.n);
printf("输入矩阵的非零元素的个数:");
scanf("%d",s.non_zero_num);
for(i=0;is.non_zero_num;i++){
printf("输入第%d个非零元数的信息:\n",i+1);
printf("行下标:");
scanf("%d",s.data[i].row);
printf("列下标:");
scanf("%d",s.data[i].col);
printf("元素的值");
scanf("%d",s.data[i].e);
}
return s;
}
void XSM_Info_Output(XSMatrix s){
int i;
printf("\n稀疏矩阵行数和列数:%d\t%d\n",s.m,s.n);
printf("稀疏矩阵三元组表如下:\n");
printf("行下标\t列下标\t值\n");
for(i=0;is.non_zero_num;i++){
printf("%d\t%d\t%d\n",s.data[i].row,s.data[i].col,s.data[i].e);
}
}
//列序递增转置法
XSMatrix TransXSM(XSMatrix s){
XSMatrix d;
int i,j,k=0;
d.m=s.n;
d.n=s.m;
d.non_zero_num=s.non_zero_num;
for(i=0;is.n;i++){
for(j=0;js.non_zero_num;j++){
if(s.data[j].col==i)
{
d.data[k].row=s.data[j].col;
d.data[k].col=s.data[j].row;
d.data[k].e=s.data[j].e;
k++;
}
}
}
return d;
}
main(){
XSMatrix source,dest;
source=XSM_Info_Input(source);
XSM_Info_Output(source);
dest=TransXSM(source);
XSM_Info_Output(dest);
}
Q5: Java找出4×5矩阵中值最小和最大元素,并分别输出其值及所在的行号和序号
1、打开电脑上的eclipse软件,配置好jdk的。
2、点击左上角的file,点击new,点击Javaproject。
3、新建一个class文件,自己取名字,勾引main选项,自动调用main方法。
4、输入代码。
5、控制台会出现6 2 9 15 1 5 18 7 20 。
关于java转置矩阵的代码和java转置矩阵的代码有哪些的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。






