打印锯齿矩阵(基本数据结构-可变数组ArrayList的使用)
锯齿矩阵是指每一行包含的元素个数不相同的矩阵,比如:
3 5 2 6 1
2 3 4
1 6 2 7
读入若干对整数 (x,y),表示在第 x行的末尾加上一个元素 y。输出最终的锯齿数组。初始时矩阵为空。
输入格式
第一行输入两个整数 n,m(1≤n,m≤10000),其中 n表示锯齿数组的行数,m 表示插入的元素总数。
接下来一共 m 行,每行两个整数x,y(1≤x≤n,0≤y≤10000),表示在第x 行的末尾插入一个元素 y。
输出格式
一共输出 n 行,每行若干个用空格分隔的整数。如果某行没有任何元素,则输出一个空行。
样例输入
3 12 1 3 2 2 2 3 2 4 3 1 3 6 1 5 1 2 1 6 3 2 3 7 1 1
样例输出
3 5 2 6 1 2 3 4 1 6 2 7
体会:第一次使用ArrayList数组,java的类库实在是太强大了!
package 计蒜客; import java.util.ArrayList; import java.util.Scanner; public class 打印锯齿矩阵 { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub Scanner scan=new Scanner(System.in); int n=scan.nextInt(); int m=scan.nextInt(); ArrayList<Integer>[] als=new ArrayList[n]; for(int i=0;i<n;i++){ als[i]=new ArrayList<Integer>(); } //als[0].add(12); for(int i=0;i<m;i++){ als[scan.nextInt()-1].add(scan.nextInt()); } for(int i=0;i<n;i++){ int j=0; while(j<als[i].size()){ System.out.print(als[i].get(j)); if(j!=als[i].size()-1){ System.out.print(" "); } j++; } System.out.println(); } } }