题目给出一个n*m的棋盘,在棋盘上会落入一定数量且携带有数字的棋子,(没有落子的值为一般为0)我们需要统计出棋盘上棋子的数量,并且找到它相应的位置坐标。
输入格式:
输入第一行给出n,m.接着输入一个n*m的二维数组
输出格式:
在第一行输出数组大小,以空格分隔,再输出棋盘落子数量,接着输出落子对应的坐标,及棋子所携带的数字。没有棋子则输出0。
输入样例:
10 10
0 3 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
1 2 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 5 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 6 0 0
输出样例:
10 10 5
0 1 3
3 0 1
3 1 2
5 6 5
9 7 6
输入样例:
10 10
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
输出样例:
10 10 0
完整代码
import java.util.Scanner; // 导入 Scanner 类,用于从标准输入读取数据
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in); // 创建 Scanner 对象,用于读取输入数据
// 读取数组的行数和列数
int n = scanner.nextInt(); // 读取数组的行数
int m = scanner.nextInt(); // 读取数组的列数
// 创建二维数组
int[][] a = new int[n][m]; // 创建一个 n 行 m 列的二维数组
// 读取数组元素
for (int i = 0; i < n; i++) { // 遍历每一行
for (int j = 0; j < m; j++) { // 遍历每一列
a[i][j] = scanner.nextInt(); // 读取数组元素
}
}
int count = 0; // 初始化大于 0 的元素个数为 0
// 统计大于 0 的元素个数
for (int i = 0; i < n; i++) { // 遍历每一行
for (int j = 0; j < m; j++) { // 遍历每一列
if (a[i][j] > 0) { // 如果当前元素大于 0
count++; // 计数加一
}
}
}
// 输出行数、列数和大于 0 的元素个数
System.out.println(n + " " + m + " " + count);
// 如果没有大于 0 的元素,直接返回
if (count == 0) {
return; // 结束程序
}
// 输出大于 0 的元素的位置和值
for (int i = 0; i < n; i++) { // 遍历每一行
for (int j = 0; j < m; j++) { // 遍历每一列
if (a[i][j] > 0) { // 如果当前元素大于 0
System.out.println(i + " " + j + " " + a[i][j]); // 输出元素的位置和值
}
}
}
}
}