藍橋杯 之 基礎練習3:字母圖形


/*
問題描述
利用字母可以組成一些美麗的圖形,下面給出了一個例子:
ABCDEFG
BABCDEF
CBABCDE
DCBABCD
EDCBABC

這是一個5行7列的圖形,請找出這個圖形的規律,並輸出一個n行m列的圖形。

輸入格式
輸入一行,包含兩個整數n和m,分別表示你要輸出的圖形的行數的列數。
輸出格式
輸出n行,每個m個字符,為你的圖形。

樣例輸入
5 7
樣例輸出
ABCDEFG
BABCDEF
CBABCDE
DCBABCD
EDCBABC

數據規模與約定
1 <= n, m <= 26。
*/

心得:

  一直以來作各種算法題,圖形輸出題貌似一直都是我的弱項,做這道題的時候也着實費了我好大勁。一開始沒有好好注意觀察圖形的規律,導致做題時很傷腦筋。做這種圖形輸出題做多了些,就會發現做這類題就得要看圖找規律,根據規律來寫代碼。像這道題的規律,它的第一行是按ABCDEFG..的順序展開,第一列也是這樣。而第i行的第i位后自左向右的字母也是按ABCDEF...展開的(i=1,2...,26),而第i行第i位前自右向左也是按ABCDEF...展開的。根據這個規律就可以寫代碼了。

  另外,在這道題中,我第一次在藍橋杯練習系統上提交的代碼,是將char二維數組的數組長度取決於我輸入的兩個數字,我在eclipse運行是可以運行成功的,但是在練習系統上提交代碼后是顯示運行錯誤。前幾次在刷藍橋杯練習系統的題目時,涉及到數組問題時也會出現這個問題,幾番試驗后我便發現,因為題目中有規定數據規模和約定,所以涉及到數組長度時,應該以題目中所給的數據規模與約定為准。

 

 1 import java.util.Scanner;
 2 public class Main{
 3     public static void main(String[] args){
 4         Scanner sc=new Scanner(System.in);
 5         int n=sc.nextInt();
 6         int m=sc.nextInt();
 7         char str;
 8         //char[][] pattern=new char[n][m];      //會出現運行錯誤
 9         char[][] pattern=new char[26][26];
10         int i=0,j=0;
11         for(i = 0;i < n;i++)  
12         {  
13             str = 'A';    
14             for(j = i;j  < m;j++)        //此處兩個循環用來控制存儲字符的  
15             {  
16                 pattern[i][j] = str++;  
17             }    
18             str = 'A';  
19             for(j = i - 1;j >= 0;j --)  
20             {  
21                 pattern[i][j] = ++str;
22             }
23         }  
24       
25         for(i = 0;i < n;i ++)    //此處用來輸出字符數組元素  
26         {  
27             for(j = 0;j < m;j ++)  
28             {  
29               System.out.print(pattern[i][j]);  
30             }  
31           System.out.println("");
32         }    
33     }
34 }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM