矩阵输出
2015-10-21 23:34
357 查看
题目:
如果一个矩阵中的某一行或者某一列和对角线的元素相同,就输出对应位置上的元素。
思路:
先处理行,判断每一行是否有重复,然后如果都相同,放到一个新数组中即可
缺点就是多申请了一个额外的空间
public class Soultion{
public static void sop(int [][] num)
{
for(int i=0;i<3;i++)
{
for(int j=0;j<3;j++)
{
if(num[i][j]!=-1)
System.out.print(num[i][j]+" ");
else
System.out.print(" ");
}
System.out.println();
}
}
public static void main(String[] args) {
int[][] num ={
{1,1,1 },
{1,1,0 },
{1,0,1 },
};
int[][] newnum={
{-1,-1,-1 },
{-1,-1,-1 },
{-1,-1,-1 },
};
int row = 3;
int col = 3;
//行
for(int i =0;i<row;i++)
{
int [] temp = new int[col];
int index=0;
boolean flag=false;
for(int j=0;j<col-1;j++)
{
if(j==0)temp[index++]=num[i][j];
if(num[i][j]!=num[i][j+1])
{
flag=true;
break;
}
else
{
temp[index++]=num[i][j+1];
}
}
//如果都相等,放入新的二维数组
if(flag==false)
{
for(int k=0;k<col;k++)
{
newnum[i][k]=temp[k];
}
}
}
//列
for(int j=0;j<col;j++)
{
int [] tempCol = new int[row];
int index2 = 0;
boolean flag =false;
for(int i=0;i<row-1;i++)
{
if(i==0)tempCol[index2++]=num[i][j];
if(num[i][j]!=num[i+1][j])
{
flag=true;
break;
}
else
{
tempCol[index2++]=num[i+1][j];
}
}
if(flag==false)
{
for(int k=0;k<row;k++)
{
newnum[k][j] = tempCol[k];
}
}
}
//左对角线
int [] temp = new int[row]; int index=0; boolean flag=false;
for(int i=0,j=0;i<row-1&&j<col-1;i++,j++)
{
if(i==0&&j==0)
{
temp[index++] = num[i][j];
}
if(num[i][j] != num[i+1][j+1])
{
flag=true;
break;
}
else
{
temp[index++]=num[i+1][j+1];
}
}
//放左对角线
if(flag==false)
{
for(int k=0;k<row;k++)
{
newnum[k][k]=temp[k];
}
}
//右对角线
int [] tempRight = new int[row]; int index2=0; boolean flag2=false;
for(int i=0,j=col-1;i<row-1&&j>0;i++,j--)
{
if(i==0&&j==col-1)
{
tempRight[index2++] = num[i][j];
}
if(num[i][j] != num[i+1][j-1])
{
flag2=true;
break;
}
else
{
tempRight[index2++]=num[i+1][j-1];
}
}
if(flag==false)
{ //放右对角线
for(int k=0;k<row;k++)
{
newnum[k][k]=tempRight[k];
}
}
sop(newnum);
}
}
如果一个矩阵中的某一行或者某一列和对角线的元素相同,就输出对应位置上的元素。
思路:
先处理行,判断每一行是否有重复,然后如果都相同,放到一个新数组中即可
缺点就是多申请了一个额外的空间
public class Soultion{
public static void sop(int [][] num)
{
for(int i=0;i<3;i++)
{
for(int j=0;j<3;j++)
{
if(num[i][j]!=-1)
System.out.print(num[i][j]+" ");
else
System.out.print(" ");
}
System.out.println();
}
}
public static void main(String[] args) {
int[][] num ={
{1,1,1 },
{1,1,0 },
{1,0,1 },
};
int[][] newnum={
{-1,-1,-1 },
{-1,-1,-1 },
{-1,-1,-1 },
};
int row = 3;
int col = 3;
//行
for(int i =0;i<row;i++)
{
int [] temp = new int[col];
int index=0;
boolean flag=false;
for(int j=0;j<col-1;j++)
{
if(j==0)temp[index++]=num[i][j];
if(num[i][j]!=num[i][j+1])
{
flag=true;
break;
}
else
{
temp[index++]=num[i][j+1];
}
}
//如果都相等,放入新的二维数组
if(flag==false)
{
for(int k=0;k<col;k++)
{
newnum[i][k]=temp[k];
}
}
}
//列
for(int j=0;j<col;j++)
{
int [] tempCol = new int[row];
int index2 = 0;
boolean flag =false;
for(int i=0;i<row-1;i++)
{
if(i==0)tempCol[index2++]=num[i][j];
if(num[i][j]!=num[i+1][j])
{
flag=true;
break;
}
else
{
tempCol[index2++]=num[i+1][j];
}
}
if(flag==false)
{
for(int k=0;k<row;k++)
{
newnum[k][j] = tempCol[k];
}
}
}
//左对角线
int [] temp = new int[row]; int index=0; boolean flag=false;
for(int i=0,j=0;i<row-1&&j<col-1;i++,j++)
{
if(i==0&&j==0)
{
temp[index++] = num[i][j];
}
if(num[i][j] != num[i+1][j+1])
{
flag=true;
break;
}
else
{
temp[index++]=num[i+1][j+1];
}
}
//放左对角线
if(flag==false)
{
for(int k=0;k<row;k++)
{
newnum[k][k]=temp[k];
}
}
//右对角线
int [] tempRight = new int[row]; int index2=0; boolean flag2=false;
for(int i=0,j=col-1;i<row-1&&j>0;i++,j--)
{
if(i==0&&j==col-1)
{
tempRight[index2++] = num[i][j];
}
if(num[i][j] != num[i+1][j-1])
{
flag2=true;
break;
}
else
{
tempRight[index2++]=num[i+1][j-1];
}
}
if(flag==false)
{ //放右对角线
for(int k=0;k<row;k++)
{
newnum[k][k]=tempRight[k];
}
}
sop(newnum);
}
}
相关文章推荐
- 深入理解Android之Gradle
- 成员资格、授权 – ASP.NET MVC 4 系列
- 147_多线程(线程间通信-生产者消费者JDK5.0升级版)
- ios面试题集锦(一)
- MyEclipse发布项目时报'Publishi to Tomat ...'has encountered a problem.Could not publish to the server错误
- 当你输入一个网址后回车,实际会发生什么?
- Opensuse13.2开启ssh
- 转:sublime2 官方网址
- IOS-UI控件大全
- A Knight's Journey(dfs+最小字典序)
- CANopen学习笔记
- HelloSCDN
- CS结构与BS结构的特点分析
- 黑盒测试、白盒测试、单元测试、集成测试、系统测试、验收测试的区别与联系
- 转:Mac OS X下Sublime Text (V2.0.1)破解
- 未导包导致的异常
- 基哥也开始学机器学习了1
- 面试常见题汇总
- [转] windows下sublime2 安装破解(key可用)
- 递归与迭代两者概念区别及实例讲解