Board logo

標題: APCS 實作題 10503 - 2 矩陣轉換-JAVA [打印本頁]

作者: 李泳霖    時間: 2023-6-3 10:18     標題: 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. }
複製代碼

作者: 李泳霖    時間: 2023-6-3 10:20

此帖僅作者可見
作者: 蔡秉勛    時間: 2023-6-3 17:30

此帖僅作者可見
作者: 富溢    時間: 2023-6-3 17:30

此帖僅作者可見
作者: 江家同    時間: 2023-6-3 17:30

此帖僅作者可見
作者: 周桓宇    時間: 2023-6-3 17:30

此帖僅作者可見
作者: 呂宏晏    時間: 2023-6-3 17:31

此帖僅作者可見
作者: 王宥凱    時間: 2023-6-3 17:31

此帖僅作者可見
作者: 王競儀    時間: 2023-6-3 17:31

此帖僅作者可見
作者: 張博翔    時間: 2023-6-3 17:31

此帖僅作者可見
作者: 陳佑俊    時間: 2023-6-3 17:31

此帖僅作者可見
作者: 許晏睿    時間: 2023-6-3 17:32

此帖僅作者可見
作者: 秉宏1    時間: 2023-6-3 17:33

此帖僅作者可見
作者: 上官語恬    時間: 2023-6-3 17:33

此帖僅作者可見
作者: 陳駿彥    時間: 2023-6-3 17:34

此帖僅作者可見
作者: 歐睿仁    時間: 2023-6-3 17:40

此帖僅作者可見
作者: 李泳霖    時間: 2023-6-3 17:43

此帖僅作者可見
作者: 黃昱齊    時間: 2023-6-10 16:39

此帖僅作者可見
作者: 江家同    時間: 2023-6-10 17:11

此帖僅作者可見
作者: 富溢    時間: 2023-6-10 17:14

此帖僅作者可見
作者: 黃昱齊    時間: 2023-6-10 17:15

此帖僅作者可見
作者: 陳佑俊    時間: 2023-6-10 17:17

此帖僅作者可見
作者: 王宥凱    時間: 2023-6-10 17:23

此帖僅作者可見




歡迎光臨 種子論壇 | 高雄市資訊培育協會學員討論區 (http://seed.istak.org.tw/) Powered by Discuz! 7.2