A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 林铁柱 黑马帝   /  2012-2-9 12:01  /  2299 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 林铁柱 于 2012-2-9 17:03 编辑

请以任何一种语言实现以下输入与输出。

输入为1,输出三维矩阵为  
  1 1 1
  1 2 1
  1 1 1

输入为2时,输出五维矩阵为  
  1 1 1 1 1
  1 1 2 1 1
  1 2 3 2 1
  1 1 2 1 1
  1 1 1 1 1

输入为3时,输出为七维矩阵   
  1 1 1 1 1 1 1
  1 1 1 2 1 1 1
  1 1 2 3 2 1 1
  1 2 3 4 3 2 1
  1 1 2 3 2 1 1
  1 1 1 2 1 1 1
  1 1 1 1 1 1 1
  …….
依此类推

要求:
1. 描述详细的设计思路
2. 可以使用任何一种语言(Java,C++等)
3. 画出流程图

评分

参与人数 1技术分 +1 收起 理由
唐秀启 + 1

查看全部评分

4 个回复

倒序浏览
  1. import java.util.*;
  2. import java.lang.Math.*;
  3. class ShuChu
  4. {
  5.         public static void main(String[] args)
  6.         {
  7.                 Scanner input = new Scanner(System.in);
  8.                         System.out.println("请输入一个整数: ");
  9.                         int n = input.nextInt();
  10.                                 System.out.println("你输入的整数是:"+n);
  11.                         int X,Y;
  12.                 X = n;
  13.                 Y= n;
  14.                 int[][] a = new int[2*n+1][2*n+1];

  15.                 /*for(int i = 0; i < 2*n+1; i++)
  16.                 {
  17.                         for(int j=0; j < 2*n+1;j++)
  18.                         {
  19.                                 a[i][j]=1;
  20.                         }
  21.        
  22.                 }
  23.                 */
  24.                 for(int i = 0; i < 2*n+1; i++)
  25.                 {
  26.                         for(int j=0; j < 2*n+1;j++)
  27.                         {
  28.                                 int t = n+1 - Math.abs(X-i) - Math.abs(Y-j);
  29.                                 if(t<1)
  30.                                            a[i][j]=1;
  31.                                 else
  32.                                         a[i][j] = t;
  33.                         }
  34.                 }
  35.                 for(int i = 0; i < 2*n+1; i++)
  36.                 {
  37.                         for(int j=0; j < 2*n+1;j++)
  38.                         {
  39.                                 System.out.print(a[i][j]);
  40.                         }
  41.                         System.out.println();
  42.                 }
  43.         }
  44. }
复制代码
我是从下标入手的 相信还有其他的方法

评分

参与人数 1技术分 +2 收起 理由
唐秀启 + 2 赞一个!

查看全部评分

回复 使用道具 举报
尹旗龙 发表于 2012-2-9 16:53
我是从下标入手的 相信还有其他的方法

厉害。。。
回复 使用道具 举报
本帖最后由 最初的理想 于 2012-2-12 21:45 编辑

笨办法了,找规律
public class Test {
        public static void main(String args[]) {
                int n = Integer.parseInt(args[0]);
                int[][] array = new int[2 * n + 1][2 * n + 1];
                int a = array[n][n] = n + 1;
                for (int i = n - 1; i >= 0; i--) {
                        for (int j = n; j <= n; j++) {
                                if (a - 1 >= 1) {
                                        array[j] = a = a - 1;
                                }
                                if (a - 1 <= 0) {
                                        array[j] = 1;
                                }
                        }
                }
               
                for (int i = n; i >= 0; i--) { // 第几行
                        for (int j = n - 1; j >= 0; j--) { // 第几列
                                if (array[j + 1] - 1 >= 1) {
                                        array[j] = array[j + 1] - 1;
                                }
                                if (array[j + 1] - 1 == 0) {
                                        array[j] = 1;
                                }
                        }
                }
                for (int i = 0; i <= n; i++) {
                        for (int j = n + 1; j <= 2 * n; j++) {
                                array[j] = array[2 * n - j];
                        }
                }
                for (int i = n + 1; i <= 2 * n; i++) {
                        for (int j = 0; j <= 2 * n; j++) {
                                array[j] = array[2 * n - i][j];
                        }
                }
                for (int i = 0; i <= 2 * n; i++) {
                        for (int j = 0; j <= 2 * n; j++) {
                                System.out.print(array[j] + " ");
                        }
                        System.out.println();
                }
        }

}

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

回复 使用道具 举报
[ 本帖最后由 刘丁 于 2012-2-14 09:37 编辑 ]

import java.io.BufferedReader;
import java.io.InputStreamReader;


public class Test {
        public static void main(String[] args) throws Exception {
                BufferedReader b = new BufferedReader(new InputStreamReader(System.in));
                System.out.println("input ...");
                int n = Integer.parseInt(b.readLine());
                int[][] a = new int[2* n + 1][2 * n + 1];
                //初始化数组
                for (int i = 0; i < a.length; i++) {
                        for (int j = 0; j < a.length; j++) {
                                a[i][j] = 1;
                        }
                }
               
                //修改数组中的值
                for (int i = 0; i <= n; i++) {
                        int k = i + 1;
                        for (int j = n; j >= n - i; j--) {
                                a[i][j] = a[2 * n - i][j] = a[i][2 * n - j] = a[2 * n - i][2 * n - j] = k--;
                        }
                }
                //输出数组
                for (int i = 0; i < a.length; i++) {
                        for (int j = 0; j < a.length; j++) {
                                System.out.print(a[i][j] + " ");
                        }
                        System.out.println();
                }
        }
}
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马