fork download
  1. /* package whatever; // don't place package name! */
  2.  
  3. import java.util.*;
  4. import java.lang.*;
  5. import java.io.*;
  6.  
  7. /* Name of the class has to be "Main" only if the class is public. */
  8. class Ideone
  9. {
  10.  
  11. public static void main (String[] args) throws java.lang.Exception
  12. {
  13. // your code goes here
  14. Scanner sc = new Scanner(System.in);
  15. int r = sc.nextInt();
  16. int c = sc.nextInt();
  17.  
  18. List<ArrayList<Integer>> Arr = new ArrayList();
  19. for(int i=0;i<r;i++){
  20. ArrayList<Integer> ar = new ArrayList();
  21. for(int j=0;j<c;j++){
  22. ar.add(sc.nextInt());
  23. }
  24. Arr.add(ar);
  25. }
  26. spiralPrint(Arr);
  27.  
  28. }
  29.  
  30.  
  31. public static void spiralPrint(List<ArrayList<Integer>>Arr){
  32. ArrayList<Integer> result = new ArrayList();
  33. int i = 0, j=0;
  34. int r = Arr.size()-1;
  35. int c = Arr.get(0).size()-1;
  36. while(true){
  37. if(i == r && j==c){
  38. break;
  39. }
  40. else if(i==r){
  41. for(int k = j;k<=c;k++){
  42. result.add(Arr.get(i).get(k));
  43. }
  44. break;
  45. }
  46. else if(j==c){
  47. for(int k = i; k<=r;k++){
  48. result.add(Arr.get(k).get(j));
  49. }
  50. break;
  51. }
  52. else{
  53. for(int k=j;k<=c;k++){
  54. System.out.println(Arr.get(i).get(k));
  55. result.add(Arr.get(i).get(k));
  56. }
  57. for(int k=i+1;k<r;k++){
  58. System.out.println(Arr.get(k).get(c));
  59. result.add(Arr.get(k).get(c));
  60. }
  61. for(int k=c;k>=j;k--){
  62. System.out.println(Arr.get(r).get(k));
  63. result.add(Arr.get(r).get(k));
  64. }
  65. for(int k = r-1; k>i;k--){
  66. System.out.println(Arr.get(k).get(j));
  67. result.add(Arr.get(k).get(j));
  68. }
  69. // System.out.println("i - "+ i + " j - "+ j + "r - "+ r + " c - "+c);
  70. if(i+1<=r-1 && j+1 <= c-1){
  71. i++;
  72. j++;
  73. r--;
  74. c--;
  75. }
  76. else{
  77. break;
  78. }
  79. }
  80. }
  81.  
  82. for(int kk=0;kk<result.size();kk++){
  83. System.out.print(result.get(kk)+" ");
  84. }
  85.  
  86. }
  87. }
Success #stdin #stdout 0.06s 2184192KB
stdin
3 4 1 2 3 4 5 6 7 8 9 10 11 12
stdout
1
2
3
4
8
12
11
10
9
5
1 2 3 4 8 12 11 10 9 5 6 7