返回列表 發帖

APCS 實作題 10503 - 2 矩陣轉換-JAVA

本帖最後由 李泳霖 於 2023-6-10 17:12 編輯

b965: 第 2 題 矩陣轉換

APCS 實作題 10503 - 2





Arrays.copyOf() 用法
  1. import java.io.BufferedReader;
  2. import java.io.IOException;
  3. import java.io.InputStreamReader;
  4. import java.util.Arrays;


  5. public class Ch01 {
  6.         BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
  7.         int r,c,m;//r-->B陣列的列,c=B陣列的欄,m=對A陣列的操作幾次
  8.         String str;//輸入用
  9.         String raw[];//切割用
  10.         int d1[][],d2[][],o[];//兩個二維陣列在互相替代,o存放的是對a的操作
  11.         Ch01() throws  IOException //建構子,初始化用
  12.         {
  13.                 while((str=br.readLine())!=null)//反覆的輸入r c m放在str裡面
  14.                 {
  15.                         raw=str.split(" ");
  16.                         r=Integer.parseInt(raw[0]);
  17.                         c=Integer.parseInt(raw[1]);
  18.                         m=Integer.parseInt(raw[2]);
  19.                         d1=new int[r][c];
  20.                         o=new int[m];
  21.                         for(int i=0;i<r;i++)//第一個迴圈進來時先做切割
  22.                         {
  23.                                 raw=br.readLine().split(" ");
  24.                                 for(int j=0;j<c;j++)//第二個迴圈做分解
  25.                                 {
  26.                                         d1[i][j]=Integer.parseInt(raw[j]);
  27.                                 }
  28.                         }
  29.                         raw=br.readLine().split(" ");//輸入對a的操作資訊
  30.                         for(int i=0;i<m;i++)
  31.                                 o[i]=Integer.parseInt(raw[i]);
  32. /*
  33.                         System.out.println("B的列:"+r+",欄:"+c+",對A的操作有"+m+"次");
  34.                         System.out.println("B陣列的內容");
  35.                         for(int i=0;i<r;i++)
  36.                         {
  37.                                 for(int j=0;j<c;j++)
  38.                                 {
  39.                                         System.out.print(d1[i][j]+" ");
  40.                                 }
  41.                                 System.out.println();
  42.                         }
  43.                         System.out.println("A的操作有:");
  44.                         for(int i=0;i<m;i++)
  45.                                 System.out.print(o[i]+" ");
  46.                         System.out.println();
  47. */
  48.                         for(int i=m-1;i>=0;i--)
  49.                         {
  50.                                 if(o[i]==1)//翻轉
  51.                                 {
  52.                                         d2=new int[r][c];
  53.                                         for(int j=0;j<r;j++)
  54.                                         {
  55.                                                 for(int k=0;k<c;k++)
  56.                                                 {
  57.                                                         d2[r-1-j][k]=d1[j][k];
  58.                                                 }
  59.                                         }


  60.                                         for(int j=0;j<r;j++)
  61.                                         {
  62.                                                 for(int k=0;k<c;k++)
  63.                                                 {
  64.                                                         d1[j][k]=d2[j][k];
  65.                                                 }
  66.                                         }

  67. /*                                        System.out.println("翻轉:");
  68.                                         for(int j=0;j<r;j++)
  69.                                         {
  70.                                                 for(int k=0;k<c;k++)
  71.                                                 {
  72.                                                         System.out.print(d1[j][k]+" ");
  73.                                                 }
  74.                                                 System.out.println();
  75.                                         }   */                                    
  76.                                 }
  77.                                 else//旋轉 (列跟欄要互換)
  78.                                 {
  79.                                         int tmp=r;
  80.                                         r=c;
  81.                                         c=tmp;
  82.                                         d2=new int[r][c];
  83.                                         for(int j=0;j<r;j++)
  84.                                         {
  85.                                                 for(int k=0;k<c;k++)
  86.                                                 {
  87.                                                         d2[j][k]=d1[k][r-1-j];
  88.                                                 }
  89.                                         }

  90.                                         d1=new int[r][c];
  91.                                         for(int j=0;j<r;j++)
  92.                                         {
  93.                                                 for(int k=0;k<c;k++)
  94.                                                 {
  95.                                                         d1[j][k]=d2[j][k];
  96.                                                 }
  97.                                         }
  98. /*
  99.                                         System.out.println("旋轉:");
  100.                                         for(int j=0;j<r;j++)
  101.                                         {
  102.                                                 for(int k=0;k<c;k++)
  103.                                                 {
  104.                                                         System.out.print(d1[j][k]+" ");
  105.                                                 }
  106.                                                 System.out.println();
  107.                                         }  
  108. */
  109.                                 }
  110.                         }
  111.                         System.out.println(r+" "+c);
  112.                         for(int i=0;i<r;i++)
  113.                         {
  114.                                 for(int j=0;j<c;j++)
  115.                                 {
  116.                                         if(j<c-1)
  117.                                                 System.out.print(d1[i][j]+" ");
  118.                                         else
  119.                                                 System.out.print(d1[i][j]);
  120.                                 }
  121.                                 System.out.println();
  122.                         }
  123.                        
  124.                 }
  125.         }

  126.         public static void main(String[] args) throws IOException {
  127.                 Ch01 c01=new Ch01();//建立Ch01的物件出來



  128.         }

  129. }
複製代碼
istak.teach2@gmail.com

此帖僅作者可見

TOP

此帖僅作者可見

TOP

此帖僅作者可見

TOP

此帖僅作者可見

TOP

此帖僅作者可見

TOP

此帖僅作者可見

TOP

此帖僅作者可見
istak.teach2@gmail.com

TOP

此帖僅作者可見

TOP

此帖僅作者可見

TOP

此帖僅作者可見

TOP

此帖僅作者可見

TOP

此帖僅作者可見

TOP

此帖僅作者可見

TOP

此帖僅作者可見

TOP

此帖僅作者可見

TOP

此帖僅作者可見

TOP

此帖僅作者可見

TOP

此帖僅作者可見

TOP

此帖僅作者可見

TOP

返回列表