1. 程式人生 > 其它 >藍橋杯 Java試題 B: 尋找 2020

藍橋杯 Java試題 B: 尋找 2020

技術標籤:藍橋杯省賽真題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++; } } } } }

謝謝大家的支援,您的一鍵三連是 罡罡同學前進的最大動力!

一鍵三連 一鍵三連 一鍵三連 一鍵三連 一鍵三連 一鍵三連