java将矩阵旋转45度输出

例如:

A B C D E
F G H I J
K L M N O
P Q R S T
U V W X Y
    E
   D J
  C I O
 B H N T
A G M S Y
 F L R X
  K Q W
   P V
    U

思路如上图:

在菱形之外的都是空格,菱形之内(可以使用函数判断)有两种点,一种是有字符,一种是空格

可以发现,有字符的位置(col-row)%2 == 0;接下来寻找45度菱形和矩形的对应关系,row’=(col-row)/2 ,col’=col-row’

完整代码如下:

public class PrintMatrixTrans45degree
{
    public static void main(String[] args)
    {
        System.out.println("Hello World!");
        int c=0;
        char[][] arr = new char[5][5];
        for(int i = 0 ; i < 5; i++){
            for(int j = 0; j < 5; j ++){
                arr[i][j]= (char)(‘A‘ + c);
                c++;
            }
        }
        for(int i = 0 ; i < 5; i++){
            for(int j = 0; j < 5; j ++){
                System.out.print(arr[i][j]+" ");
            }
            System.out.println();
        }
        for(int i = 4; i >= -4; i--){
            int row = 0;
            int col = 0;
            for(int j = 0; j <= 8 ; j ++){
                if(isArea(i,j)){
                    if((j-i)%2 == 0){
                        //打印字母
                        row = (j - i)/2;
                        col = j - row;
                        System.out.print(arr[row][col]);
                    }else{
                        System.out.print(" ");
                    }
                }else{
                    //打印空格
                    System.out.print(" ");
                }
            }
            System.out.println();
        }
    }

    public static boolean isArea(int row , int col){
        if(row <= col &&  row >= col - 8 && row >= -col && row <= -col + 8  ){
            //System.out.println("("+row+","+col+")");
            return true;
        }
        return false;
    }
}

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-11-08 22:08:42

java将矩阵旋转45度输出的相关文章

O(1)空间复杂度实现n*n矩阵旋转90度

O(1)空间复杂度实现n*n矩阵旋转90度, #include <iostream> using namespace std; #define ARRAY_SIZE 5 void print_two_array (int a[][ARRAY_SIZE]) { cout << endl;    for (int i=0; i<ARRAY_SIZE; i++) { for (int j=0; j<ARRAY_SIZE; j++) {    cout << a[i

矩阵旋转90度(keep it up)

一张图像表示成NxN的矩阵,图像中每个像素是4个字节,写一个函数把图像旋转90度. 你能原地进行操作吗?(即不开辟额外的存储空间) 这个题第一感觉就是一次交换矩阵的元素: 比如 3*3 矩阵 1 2 3 4 5 6 7 8 9 先处理第一行,一次逆时针旋转四个元素,下面是二次做的 3 2 9          3 6 9 4 5 6          2 5 8 1 8 7          1 4 7 第一次         第二次 如果是5*5的矩阵 1   2   3   4   5 6

HTML5 Canvas 描画旋转45度佛教万字

效果如下: 代码如下: <!DOCTYPE html> <html lang="utf-8"> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> <head> <title>旋转45度佛教万字</title> </head> <body onload="draw

逆时针旋转90度输出二叉树(数据结构试验二)

逆时针旋转90度打印二叉树是一种特殊的中序遍历算法 图解逆时针旋转90度操作 实现也特别简单,跟中序遍历算法差不多,在输出节点值前,用个特殊标记记录层数并输出适当的空格就可以了. 代码: void prtbtree(BiTNode *p,int cur)//逆时针旋转90度输出二叉树 { if(p) { prtbtree(p->rch,cur+1); for(int i=0;i<=cur;i++) printf(" "); printf("%3c",p-

二维数组(矩阵)之将矩阵旋转90度

将矩阵旋转90度: 题目描述: 例如将一个5*5的矩阵顺时针旋转90度:旋转前 1       2        3         4         5 6       7        8         9        10 11    12      13      14       15 16    17      18      19       20 21    22      23      24       25 选转后: 21     16      11       6

CC150:将一个矩阵旋转90度

一张图像表示成n X n的矩阵,写一个函数把图像旋转90度.不开辟额外的存储空间 我们假设要将图像逆时针旋转90度.原图如下所示: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 逆时针旋转90度后的图应该是: 4 8 12 16 3 7 11 15 2 6 10 14 1 5 9 13 我们要如何原地进行操作以达到上面的效果呢?可以分两步 第一步交换主对角线两侧的对称元素, 第二步交换第i行和第n-1-i行,即得到结果. 看图示: 原图:           第一

矩阵旋转90度

初始化矩阵 void initial_square_matrix(int * * * pm, int n) { pm[0] = new int *[n]; for (int i = 0; i < n; i++) { pm[0][i] = new int[n]; for (int j = 0; j < n; j++) pm[0][i][j] = i * n + j + 1; } } 销毁矩阵 void destroy_square_matrix(int * * * pm, int n) { fo

按钮旋转45度然后复原

//默认没旋转 open=NO; if (open==YES) {            [UIView animateWithDuration:0.03 delay:0 options:UIViewAnimationOptionCurveLinear animations:^{                btn1.transform = CGAffineTransformIdentity;            } completion:^(BOOL finished) {        

算法题:矩阵旋转90度

#include <iostream> #include <iomanip> using namespace std; void Grial(int (*a)[5],int n) { //数组顺时针旋转90度. //边界值的考虑让我小小的思考了一下. int temp; int startX = 0; int startY = 0; int j = 0; while (startX < n/2) { startX = j; for (int i = j; i < n -