【小题练手】----平方矩阵

ced485cbb11e458d81a746890b32cf3f.gif

🎈🎈作者 : whispar

🎈🎈专栏 : 小题练手​​​​​​

🌈刷题,面试,求职,快来牛客网一起成为offer收割机!🌈

点击注册收割offer

活动地址:CSDN21天学习挑战赛

平方矩阵Ⅱ 

输入整数 N,输出一个 N 阶的二维数组,数组的形式参照样例。

输入格式 

输入包含多行,每行包含一个整数 N。

当输入行为 N=0 时,表示输入结束,且该行无需作任何处理。

输出格式

对于每个输入整数 N,输出一个满足要求的 N阶二维数组。

每个数组占 N 行,每行包含 N 个用空格隔开的整数。

每个数组输出完毕后,输出一个空行。

数据范围

0≤N≤100

输入样例:

1
2
3

输出样例:

1

1 2
2 4

1 2 4
2 4 8
4 8 16

思路:观察输出矩阵的特点,

方法一:矩阵规律是沿着对角线分别向右侧和下侧增加,找到对角线上一值,分别向右和下逐增至n即可
27f9a69141854be58b09641410011d4e.png

import java.util.Scanner;
public class Main{
    public static void main(String[] args) {
        Scanner scanner =new Scanner(System.in);
        int[][] arr = new int[110][110];    //0<N<100
        while(scanner.hasNextInt()){
            int n =scanner.nextInt();
            for(int i =0 ;i <= n ;i++){
                for(int j = i,k =1;j<=n;j++,k++){
                      arr[i][j] = k;
                      arr[j][i] = k;
                }
            }
            // 输出
            for(int i = 1;i <= n ;i ++){
                for(int j = 1;j <= n ;j ++){
                    System.out.print(arr[i][j]+" ");
                }
                System.out.println();
            }
        }
    }
}

方法二:找特殊规律,i - j  的绝对值+1的值,即为对应(i , j)坐标下的元素值

7ab2287cb0aa484a9fcfb1343e8df0e1.png

import java.util.Scanner;
import java.lang.Math.abs;
public class Main{
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        while(scanner.hasNextInt()){
            int n =scanner.nextInt();
            for (int i = 1; i <= n; i++) {
                for (int j = 1; j <= n ; j++) {
                    System.out.print(abs(i-j)+1+" ");
                }
                System.out.println();
            }
            System.out.println();
        }
    }
}

平方矩阵Ⅲ 

输入整数 N,输出一个 N 阶的二维数组 M。

这个 NN 阶二维数组满足 M[i][j]=2 ^i+j

具体形式可参考样例。

输入格式

输入包含多行,每行包含一个整数 N。

当输入行为 N=0时,表示输入结束,且该行无需作任何处理。

输出格式

对于每个输入整数 N,输出一个满足要求的 NN 阶二维数组。

每个数组占 N行,每行包含 N 个用空格隔开的整数。

每个数组输出完毕后,输出一个空行。

数据范围

0≤N≤15

输入样例:

1
2
3
0

输出样例:

1

1 2
2 4

1 2 4
2 4 8
4 8 16

 思路:利用for循环,输出pow(2,i+j)即可,注意换行和空格

public class Main{
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        while(sc.hasNextInt()){
            int n = sc.nextInt();
            for(int i = 0;i<n;i++){
                for(int j = 0;j<n;j++){
                    int res = (int)Math.pow(2,i+j);
                    System.out.printf(res+" ");
                }
                System.out.println();
            }
            System.out.println();
        }
    }
}

      💖如果文章对你有帮助,请多多点赞、收藏、评论、关注支持!!💖        

ced485cbb11e458d81a746890b32cf3f.gif

  • 12
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

署前街的少年

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值