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


    ced485cbb11e458d81a746890b32cf3f.gif

      🎈🎈 作者 whispar

    🎈🎈专栏 : 小题练手

    7abc9c8906564477a6679bb15d368e37.gif

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

    平方矩阵Ⅱ 

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

    输入格式 

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

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

    输出格式

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

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

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

    数据范围

    0≤N≤100

    输入样例:

    1. 1
    2. 2
    3. 3

    输出样例:

    1. 1
    2. 1 2
    3. 2 4
    4. 1 2 4
    5. 2 4 8
    6. 4 8 16

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

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

    1. import java.util.Scanner;
    2. public class Main{
    3. public static void main(String[] args) {
    4. Scanner scanner =new Scanner(System.in);
    5. int[][] arr = new int[110][110]; //0
    6. while(scanner.hasNextInt()){
    7. int n =scanner.nextInt();
    8. for(int i =0 ;i <= n ;i++){
    9. for(int j = i,k =1;j<=n;j++,k++){
    10. arr[i][j] = k;
    11. arr[j][i] = k;
    12. }
    13. }
    14. // 输出
    15. for(int i = 1;i <= n ;i ++){
    16. for(int j = 1;j <= n ;j ++){
    17. System.out.print(arr[i][j]+" ");
    18. }
    19. System.out.println();
    20. }
    21. }
    22. }
    23. }

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

    7ab2287cb0aa484a9fcfb1343e8df0e1.png

    1. import java.util.Scanner;
    2. import java.lang.Math.abs;
    3. public class Main{
    4. public static void main(String[] args) {
    5. Scanner scanner = new Scanner(System.in);
    6. while(scanner.hasNextInt()){
    7. int n =scanner.nextInt();
    8. for (int i = 1; i <= n; i++) {
    9. for (int j = 1; j <= n ; j++) {
    10. System.out.print(abs(i-j)+1+" ");
    11. }
    12. System.out.println();
    13. }
    14. System.out.println();
    15. }
    16. }
    17. }

    平方矩阵Ⅲ 

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

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

    具体形式可参考样例。

    输入格式

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

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

    输出格式

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

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

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

    数据范围

    0≤N≤15

    输入样例:

    1. 1
    2. 2
    3. 3
    4. 0

    输出样例:

    1. 1
    2. 1 2
    3. 2 4
    4. 1 2 4
    5. 2 4 8
    6. 4 8 16

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

    1. public class Main{
    2. public static void main(String[] args){
    3. Scanner sc = new Scanner(System.in);
    4. while(sc.hasNextInt()){
    5. int n = sc.nextInt();
    6. for(int i = 0;i
    7. for(int j = 0;j
    8. int res = (int)Math.pow(2,i+j);
    9. System.out.printf(res+" ");
    10. }
    11. System.out.println();
    12. }
    13. System.out.println();
    14. }
    15. }
    16. }

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

    ced485cbb11e458d81a746890b32cf3f.gif

  • 相关阅读:
    react源码分析:实现react时间分片
    【心理学】2022-08-08 日常生活问题回答
    数据结构的概念大合集05(串)
    pandas.DataFrame.to_excel:在同一个sheet内追加数据
    C++下基于遗传算法解决TSP问题
    给你 2 万条数据,怎么快速导入到 MySQL?
    美团基于 Flink 的实时数仓平台建设新进展
    Vue+Element switch组件的使用
    《吐血整理》进阶系列教程-拿捏Fiddler抓包教程(20)-Fiddler精选插件扩展安装,让你的Fiddler开挂到你怀疑人生
    7年Android程序员转行一、二、三事
  • 原文地址:https://blog.csdn.net/m0_56361048/article/details/126195022