藍橋杯 Java試題 B: 尋找 2020
阿新 • • 發佈:2021-01-20
技術標籤:藍橋杯省賽真題java藍橋杯藍橋杯真題尋找2020
大家關注微信公眾號 罡罡同學 回覆藍橋杯
可免費獲得歷年真題和C語言版的真題原始碼
Java試題 B: 尋找 2020
【問題描述】
小藍有一個數字矩陣,裡面只包含數字 0 和 2。小藍很喜歡 2020,他想找
到這個數字矩陣中有多少個 2020 。
小藍只關注三種構成 2020 的方式:
• 同一行裡面連續四個字元從左到右構成 2020。
• 同一列裡面連續四個字元從上到下構成 2020。
• 在一條從左上到右下的斜線上連續四個字元,從左上到右下構成 2020。
例如,對於下面的矩陣:
220000
000000
002202
000000
000022
002020
一共有 5 個 2020。其中 1 個是在同一行裡的, 1 個是在同一列裡的, 3 個
小藍的矩陣比上面的矩陣要大,由於太大了,他只好將這個矩陣放在了一
個檔案裡面,在試題目錄下有一個檔案 2020.txt,裡面給出了小藍的矩陣。
請幫助小藍確定在他的矩陣中有多少個 2020。
【答案提交】
這是一道結果填空的題,你只需要算出結果後提交即可。本題的結果為一個整數,在提交答案時只填寫這個整數,填寫多餘的內容將無法得分。
個人答案:16520
txt文字中的矩陣為300*300的,所以陣列定義為300的。
import java.util.Scanner;
public class test{
public static long count;
public static void main (String[] args){
Scanner sc = new Scanner(System.in);
String[] str = new String[300];
for(int i=0;i<300;i++){
str[i] = sc.nextLine();
}
c(str);
System.out.println(count);
}
public static void c(String[] str){
for(int i=0;i<str.length;i++){
for(int j=0;j<str[i].length();j++){
if (str[i].charAt(j)=='2')//開頭一定是2
{
//橫向
if(str[i].length()-j>=4 && str[i].charAt(j+1)=='0' && str[i].charAt(j+2)=='2' && str[i].charAt(j+3)=='0')
count++;
//豎向
if(str.length-i>=4 && str[i+1].charAt(j)=='0' && str[i+2].charAt(j)=='2' && str[i+3].charAt(j)=='0')
count++;
//斜向
if(str[i].length()-j>=4 && str.length-i>=4 && str[i+1].charAt(j+1)=='0' && str[i+2].charAt(j+2)=='2' && str[i+3].charAt(j+3)=='0')
count++;
}
}
}
}
}
謝謝大家的支援,您的一鍵三連是 罡罡同學前進的最大動力!
一鍵三連 一鍵三連 一鍵三連 一鍵三連 一鍵三連 一鍵三連