返回列表 發帖

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

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

TOP

此帖僅作者可見

TOP

此帖僅作者可見

TOP

此帖僅作者可見

TOP

此帖僅作者可見

TOP

此帖僅作者可見

TOP

此帖僅作者可見

TOP

此帖僅作者可見

TOP

此帖僅作者可見

TOP

此帖僅作者可見

TOP

此帖僅作者可見

TOP

此帖僅作者可見

TOP

此帖僅作者可見

TOP

此帖僅作者可見

TOP

此帖僅作者可見

TOP

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

TOP

此帖僅作者可見

TOP

此帖僅作者可見

TOP

此帖僅作者可見

TOP

返回列表