java编译回旋矩阵,C/C++通用算法代码
2018-03-30 11:52
399 查看
矩阵分析:把回旋矩阵看作多个空心的矩阵,如图:
注:五阶矩阵示意:
然后找到每个空心矩阵和它上下左右的for循环关系即可,如图:
注:六阶矩阵示意:
其中重要的一点是:将矩阵的上下和左右对称分析,这样确保自己不会再分析的过程中,头晕眼花,相关代码如下:package proj18.回旋矩阵;
import javax.swing.JOptionPane;
public class main {
public static void main(String[] args) {
String str=JOptionPane.showInputDialog("你想要几阶回旋矩阵:");
int n=Integer.parseInt(str);
int[][] a= new int [100][100];
int i,j,num=0;
for(int m=0;m<n/2;m++) {//n阶矩阵,意味着从外至内一共有n/2向下取整个矩阵;
for(j=m;j<n-m;j++) {//上
a[m][j]=num++;
}
for(i=m+1;i<n-m-1;i++) {//右
a[i][n-m-1]=num++;
}
for(j=n-m-1;j>=m;j--) {//下
a[n-m-1][j]=num++;
}
for(i=n-m-2;i>=m+1;i--) {//左
a[i][m]=num++;
}
if(n%2==1) {//当阶数%2=1时,最中间的数值;
a[n/2][n/2]=n*n-1;
}
}
for(i=0;i<n;i++) {//输出矩阵
for(j=0;j<n;j++)
{
System.out.print(a[i][j]+" ");
}
System.out.println();
}
}
}
其中此段代码通用c/c++/java:
注:五阶矩阵示意:
然后找到每个空心矩阵和它上下左右的for循环关系即可,如图:
注:六阶矩阵示意:
其中重要的一点是:将矩阵的上下和左右对称分析,这样确保自己不会再分析的过程中,头晕眼花,相关代码如下:package proj18.回旋矩阵;
import javax.swing.JOptionPane;
public class main {
public static void main(String[] args) {
String str=JOptionPane.showInputDialog("你想要几阶回旋矩阵:");
int n=Integer.parseInt(str);
int[][] a= new int [100][100];
int i,j,num=0;
for(int m=0;m<n/2;m++) {//n阶矩阵,意味着从外至内一共有n/2向下取整个矩阵;
for(j=m;j<n-m;j++) {//上
a[m][j]=num++;
}
for(i=m+1;i<n-m-1;i++) {//右
a[i][n-m-1]=num++;
}
for(j=n-m-1;j>=m;j--) {//下
a[n-m-1][j]=num++;
}
for(i=n-m-2;i>=m+1;i--) {//左
a[i][m]=num++;
}
if(n%2==1) {//当阶数%2=1时,最中间的数值;
a[n/2][n/2]=n*n-1;
}
}
for(i=0;i<n;i++) {//输出矩阵
for(j=0;j<n;j++)
{
System.out.print(a[i][j]+" ");
}
System.out.println();
}
}
}
其中此段代码通用c/c++/java:
相关文章推荐
- mac os/Linux 下命令行C/C++/Java代码编译+运行方法
- java/android 使用swig编译c/c++ 代码类型转换
- eclipse编译调试java与ndk c++的混合代码
- 编译原理(九) LR(0)文法分析法(算法描述和C++代码实现)
- Ubuntu&红帽的vim通用配置(文件头+一键编译执行C/C++/Java单文件)
- JAVA代码—算法基础:最大子矩阵的和(N*N的矩阵)
- 编译原理(九) LR(0)文法分析法(算法描述和C++代码实现)
- 对sql查询语句组合查询的通用实现算法(c++版,java版)
- JAVA代码—算法基础:转圈打印矩阵
- 对sql查询语句组合查询的通用实现算法(c++版,java版)
- JAVA代码—算法基础:0-1矩阵的问题
- [Android NDK]命令行编译C++代码(JNI)的方式(windows和linux通用)
- JAVA代码—算法基础:将N*N的矩阵顺时针旋转90度输出元素
- java也能写出点点算法-像C++一样去优化核心并发的代码例子1
- 【数据结构】稀疏矩阵的压缩存储和转置算法(C++代码)
- JAVA代码—算法基础:矩阵元素置零
- 一些算法的代码练习(c++实现,编译环境xcode)
- Ubuntu&红帽的vim通用配置(文件头+一键编译执行C/C++/Java单文件)
- eclipse编译调试java与ndk c++的混合代码
- eclipse编译调试java与ndk c++的混合代码