码迷,mamicode.com
首页 > 编程语言 > 详细

[Java] 实验10

时间:2016-05-12 16:18:20      阅读:205      评论:0      收藏:0      [点我收藏+]

标签:

50011

这题考察如何定义method。method主要由

    - 返回值 (return value)

    - 方法名 (method name)

    - 参数列表 (argument list)

    - 方法体 (method body)

组成。

这题的max方法,大概是:

int max(int a, int b, int c) {
  // ...
}

60001 求平均值

注意经常出现的错误:整数除整数,结果仍为整数。


60002 求最大值及其下标

这题考察遍历数组的方法:

for (int i = 0; i < array.length; ++ i) {
  // 通过 arrray[i] 可以访问数组 array 的第 i 个元素
}


60003 逆序输出

逆序访问数组即可:

for (int i = array.length - 1; i >= 0; -- i) {
  // todo
}

60004 交换最小值和最大值

解题思路

1. 通过60002, 我们可以找到最大值及其下标。由此可以把该值 maximum 与数组元素 array[0] 交换。

2. 稍微修改程序,我们可以找到最小值及其下表。由此可以把该值 minimal 与数组末尾元素 array[array.length - 1] 交换。

3. 如何交换。大家可以参考下述这段可复用(在1, 2步骤中,都可以调用它)的代码

// 交换 array[idx1] 和 array[idx2]
static void swap(int[] array, int idx1, int idx2) {
  int temp = array[idx1];
  array[idx1] = array[idx2];
  array[idx2] = temp;
}

// 在main函数中,假如有下述数组
int[] a = new int[] {0, 1, 2, 3};
// 通过下述的swap函数,数组 a 会变成 {3, 1, 2, 0}
swap(a, 0, a.length - 1);
大致刻画解题思路的代码如下:

public static void main(String[] args) {
  // ...
  for (int ri = 0; ri < repeat; ++ ri) {
    int nums = new int[n];
    // input n numbers 
    // ...
    int maxIdx = minIdx = 0;
    for (int i = 0; i < n; ++ i) {
      // Find the real maxIdx and minIdx here
    }
    swap(nums, maxIdx, 0);
    swap(nums, minIdx, nums.length - 1);
  }
}

static void swap(int[] array, int idx1, int idx2) {
  int temp = array[idx1];
  array[idx1] = array[idx2];
  array[idx2] = temp;
}

60011 矩阵运算

1. 通过下述代码可以访问矩阵中的第 i 行 第 j 列的元素:

for (int i = 0; i < n; ++ i) 
  for (int j = 0; j < n; ++ j)
    // todo ...
    // 注意:如果你要在 for 中执行多条语句,那么需要加上花括号
2. 读清题意,只有同时满足下述三种情况的数字才能被加入 sum 中:

    - 不在最后一行 (i != ?)

    - 不在最后一列 (j != ?)

    - 不在副对角线上 (i + j != ?)

[Java] 实验10

标签:

原文地址:http://blog.csdn.net/stephen_wong/article/details/51367013

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!