java类似矩阵转置问题,没搞明白,求帮助 25
有牛人能帮小弟解决一下问题吗?在java里,如何实现转置问题。java不像c/c++,数组不会填充0,不会是四四方方的矩阵,不知道该怎么换举例:{{1,2,3},{4,5...
有牛人能帮小弟解决一下问题吗?
在java里,如何实现转置问题。java不像c/c++,数组不会填充0,不会是四四方方的矩阵,不知道该怎么换
举例:
{{1,2,3},{4,5,6,7},{8,9}}怎么转换成{{1,4,8},{2,5,9},{3,6},{7}}
希望大家看清题目,要求不能有冗余0出现,输出的不是4个一维数组,那种缺的位置用0代替的形式,而是输出{{1,4,8},{2,5,9},{3,6},{7}},最后一维数组,就一个元素7,而不是{0,7,0,0},这是动态改变的,输入的结果不一定是这样的,说了,不是四四方方的矩形矩阵,有大有小,输出的也是这样,java不像c/c++,2维数组种,它的下一维,不会为了对齐而自动填充0的,希望我的叙述这次能让大家明白点,还望有人能帮助小弟解决这个问题,谢谢了,分不够我会加的 展开
在java里,如何实现转置问题。java不像c/c++,数组不会填充0,不会是四四方方的矩阵,不知道该怎么换
举例:
{{1,2,3},{4,5,6,7},{8,9}}怎么转换成{{1,4,8},{2,5,9},{3,6},{7}}
希望大家看清题目,要求不能有冗余0出现,输出的不是4个一维数组,那种缺的位置用0代替的形式,而是输出{{1,4,8},{2,5,9},{3,6},{7}},最后一维数组,就一个元素7,而不是{0,7,0,0},这是动态改变的,输入的结果不一定是这样的,说了,不是四四方方的矩形矩阵,有大有小,输出的也是这样,java不像c/c++,2维数组种,它的下一维,不会为了对齐而自动填充0的,希望我的叙述这次能让大家明白点,还望有人能帮助小弟解决这个问题,谢谢了,分不够我会加的 展开
展开全部
public class Test {
public static void main(String[] args) {
int[][] array_a = {{1,2,3},{4,5,6,7},{8,9}};
int[][] array_b;
//获取矩阵行列中的最大值
int max = array_a[0].length;
for(int i=0; i<array_a[0].length; i++) {
if(array_a[i].length > max) {
max = array_a[i].length;
}
}
//对数组array_b进行初始化
array_b = new int[max][];
for(int i=0; i<max; i++) {
array_b[i] = new int[max];
}
//输出array_a的值
System.out.println("初始值:");
for(int i=0;i<array_a.length; i++) {
for(int j=0; j<array_a[i].length; j++) {
System.out.print(array_a[i][j] + "");
}
System.out.println();
}
//对array_b进行赋值
for(int i=0;i<array_a.length; i++) {
for(int j=0; j<array_a[i].length; j++) {
array_b[j][i] = array_a[i][j];
}
}
//输出array_b的值
System.out.println("变化后:");
for(int i=0;i<array_b.length; i++) {
for(int j=0; j<array_b[i].length; j++) {
System.out.print(array_b[i][j] + "");
}
System.out.println();
}
}
}
public static void main(String[] args) {
int[][] array_a = {{1,2,3},{4,5,6,7},{8,9}};
int[][] array_b;
//获取矩阵行列中的最大值
int max = array_a[0].length;
for(int i=0; i<array_a[0].length; i++) {
if(array_a[i].length > max) {
max = array_a[i].length;
}
}
//对数组array_b进行初始化
array_b = new int[max][];
for(int i=0; i<max; i++) {
array_b[i] = new int[max];
}
//输出array_a的值
System.out.println("初始值:");
for(int i=0;i<array_a.length; i++) {
for(int j=0; j<array_a[i].length; j++) {
System.out.print(array_a[i][j] + "");
}
System.out.println();
}
//对array_b进行赋值
for(int i=0;i<array_a.length; i++) {
for(int j=0; j<array_a[i].length; j++) {
array_b[j][i] = array_a[i][j];
}
}
//输出array_b的值
System.out.println("变化后:");
for(int i=0;i<array_b.length; i++) {
for(int j=0; j<array_b[i].length; j++) {
System.out.print(array_b[i][j] + "");
}
System.out.println();
}
}
}
更多追问追答
追问
这个,输出的有多余的0啊,要求输出的不是四四方方,每一个一位数组的长度都不一样,你这是先用max记录最大的值,然后初始化的时候,默认分配最大的值,如果要是大一点的数组,如100行,50列的数组,你的冗余0会更多,我给的例子,很清楚了,例如最后一维输出的数组是一个元素的{7},而不是{0,7,0,0}的一维4元素的数组……
追答
那你转置过来之后还是矩阵吗???好像没有数组是有a[3][1], 而没有a[3][0]的吧???
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
package wuziqi;
public class Sige {
//此程序为二维数组实现唐诗的竖行
public static void main(String[] args){
char[][] arr={{'天','下','风','去','出','我','辈'},{'一','入','江','湖','岁','月','摧'},
{'皇','图','霸','业','谈','笑','中'},{'不','胜','今','宵','一','场','醉'}};
for(int i=0;i<arr[0].length;i++){
for(int j=arr.length-1;j>=0;j--){
System.out.print(arr[j][i]);
}
System.out.println();
}
}
}
这个和那个很相似,这个里面放的是诗词,改变一下字符串串就好啦。
public class Sige {
//此程序为二维数组实现唐诗的竖行
public static void main(String[] args){
char[][] arr={{'天','下','风','去','出','我','辈'},{'一','入','江','湖','岁','月','摧'},
{'皇','图','霸','业','谈','笑','中'},{'不','胜','今','宵','一','场','醉'}};
for(int i=0;i<arr[0].length;i++){
for(int j=arr.length-1;j>=0;j--){
System.out.print(arr[j][i]);
}
System.out.println();
}
}
}
这个和那个很相似,这个里面放的是诗词,改变一下字符串串就好啦。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这个你可以看成是一个二维的3*4矩阵啊,。
然后就是一个转置矩阵,转置矩阵会吧,不会在CALL
然后就是一个转置矩阵,转置矩阵会吧,不会在CALL
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
如果你是学java的,你可以试试加入该群,今后也许会对你有很大帮助
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询