一、题目链接
http://noi.openjudge.cn/ch0109/10/
二、解题思路
三、实施步骤
四、Java程序
import java.util.Arrays;
import java.util.Scanner;
public class Main {
/**
* 提取给定字符串中的整数数组
*
* @param text String类型的对象,代表给定字符串
* @return int类型的数组,代表从text中提取的整数数组
*/
public int[] array(String text) {
String[] nums = text.split(","); // 通过一个逗号将text分割为数字字符串集合
int n = nums.length; // text中数字字符串的个数
int[] ans = new int[n]; // 从text中提取的整数数组
/* 将nums中的数字字符串依次转换为对应的整数,并存入ans数组中 */
for (int i = 0; i < n; i++) {
ans[i] = Integer.parseInt(nums[i]);
}
return ans;
}
/**
* 返回给定数组中的最大值
*
* @param nums int类型的数组,代表给定数组
* @return int类型的整数,代表nums中的最大值
*/
public int getMax(int[] nums) {
int n = nums.length; // nums数组中元素的个数
int ans = nums[0]; // 初始时假定第一个元素最大
/* 从nums数组的第二个元素开始,到最后一个元素为止 */
for (int i = 1; i < n; i++) {
ans = (ans < nums[i] ? nums[i] : ans); // 更新ans
}
return ans;
}
/**
* 统计给定字符串数组中的最大值及其出现的行号
*
* @param texts String类型的数组,代表给定字符串数组
* @return int类型的数组,第一个元素为texts中的最大值,其它元素为最大值依次出现的行号
*/
public int[] countMax(String[] texts) {
int n = texts.length; // texts中字符串的个数
int maxOfAll; // texts中的最大值
int[] maxValues = new int[n]; // 存储texts中每个字符串的最大值
int[] nums; // 代表texts中每个字符串转换成的整数数组
int[] ans = new int[n + 1]; // 返回结果
int m = 1; // ans中存储行号的起始位置为ans[1]
/* 计算texts中每行字符串的最大值,并依次推入maxValues数组 */
for (int i = 0; i < n; i++) {
nums = array(texts[i]);
maxValues[i] = getMax(nums);
}
maxOfAll = getMax(maxValues); // 计算texts中的最大值
ans[0] = maxOfAll; // ans的第一个元素存储maxOfAll
/* 遍历texts每一行的字符串,找出包含maxOfAll的行 */
for (int i = 0; i < n; i++) {
if (maxValues[i] == maxOfAll) {
ans[m] = i + 1; // 将所在行的行号推入ans
m++;
}
}
return Arrays.copyOfRange(ans, 0, m); // ans[0]存储整体最大值,ans[1]~ans[m-1]存储出现整体最大值的行号
}
public static void main(String[] args) {
Main test = new Main();
Scanner input = new Scanner(System.in);
int n = input.nextInt();
input.nextLine();
String[] texts = new String[n];
for (int i = 0; i < n; i++) {
texts[i] = input.nextLine();
}
int[] ans = test.countMax(texts);
System.out.println(ans[0]);
System.out.print(ans[1]);
for (int i = 2; i < ans.length; i++) {
System.out.print("," + ans[i]);
}
}
}