计蒜客习题(java)-打印锯齿矩阵
2018-03-03 11:00
603 查看
题目要求:锯齿矩阵是指每一行包含的元素个数不相同的矩阵,比如:
读入若干对整数 (x,y)(x,y),表示在第 xx 行的末尾加上一个元素 yy。输出最终的锯齿数组。初始时矩阵为空。
接下来一共 mm 行,每行两个整数 x,y(1 \leq x \leq n, 0 \leq y \leq 10000)x,y(1≤x≤n,0≤y≤10000),表示在第 xx 行的末尾插入一个元素 yy。
AC代码
3 5 2 6 1 1 3 22 2 2 4
读入若干对整数 (x,y)(x,y),表示在第 xx 行的末尾加上一个元素 yy。输出最终的锯齿数组。初始时矩阵为空。
输入格式
第一行输入两个整数 n,m(1 \leq n,m \leq 10000)n,m(1≤n,m≤10000),其中 nn 表示锯齿数组的行数,mm 表示插入的元素总数。接下来一共 mm 行,每行两个整数 x,y(1 \leq x \leq n, 0 \leq y \leq 10000)x,y(1≤x≤n,0≤y≤10000),表示在第 xx 行的末尾插入一个元素 yy。
输出格式
一共输出 nn 行,每行若干个用空格分隔的整数。如果某行没有任何元素,则输出一个空行。样例输入
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感受:用动态数组会更节省内存空间,但是才疏学浅,想半天都不知道如何实现用动态数组实现一个二维矩阵。纠结了半天还是用二维数组来得快。虽然二维数组较动态数组来说空间占用更大,但相比之下更方便访问数据。而动态数组因为其动态性,在内容为空的时候不能使用get方法访问数据。二者各有优点。对于这种有输入有范围限制的,用二维数组也不失为一个良策……
AC代码
import java.util.*; class Main { public static void main(String[] args) { Scanner cin = new Scanner(System.in); int[][]arr=new int[10005][10005]; int []count=new int[10005]; int n=cin.nextInt(); int m=cin.nextInt(); for(int i=0;i<m;i++){ int flag= cin.nextInt(); arr[flag][count[flag]]=cin.nextInt(); count[flag]++; } for(int i=1;i<=n;i++){ for(int j=0;j<count[i];j++){ System.out.print(arr[i][j]); if(j!=count[i]-1) System.out.print(" "); } System.out.println(); } } }
相关文章推荐
- 计蒜客习题(java)-括号匹配
- java打印星图案-习题3.5
- 计蒜客习题:打印锯齿矩阵
- 计蒜客习题(java)--报数
- java习题-(七)
- 1、2、2、3、4、5这六个数字,用java写一个main函数,打印出所有不同的排列, 如:512234、412345等.要求:"4"不能在第三位,"3"与"5"不能相连.
- 2015第六届蓝桥杯 09 打印大X(java)
- java StringBuffer实现file打印
- 关于JAVA中log4j与logslf4j打印日志用法
- 计蒜客 2018蓝桥杯省赛 B组模拟赛(一) D题 LIS(java)
- 剑指offer面试题5 从尾到头打印链表(java实现)
- Java习题2
- printstar打印星形图案的java实现
- 数据结构(java语言描述)栈(队列)习题
- java语言俩个for嵌套打印图形-作者:明月-整理:逝秋
- Java习题
- java如何打印万年历
- java 打印图形
- Java - Thinking in Java 第5章 习题
- Java如何打印数组之Array.To a468 String()