更新了第九题的满分解析~~~(看完了直播后有感而发
总结:与往届题目相比,,暴力题型少了许多,增加了dp和图论的考察,不过在不会的情况下,暴力还是能骗不少分的
目录
试题A:门牌制作
思路:枚举就行,水题一道,没啥说的,上代码
public class 门牌制作 {
public static void main(String[] args) {
int cnt=0;
for (int i = 1; i <= 2020; i++) {
String s=i+"";
for (int j = 0; j < s.length(); j++) {
if(s.charAt(j)=='2') cnt++;
}
}
System.out.println(cnt);
}
}
答案:624
试题B:寻找2020
思路:这道题比较重要的一个地方就是文件的读取了,毕竟有几百行,我这里使用的是BufferedReander来读取,需要注意的是,该类在使用readline方法时,若没有文件内容了,将返回null,因此我们可以
利用这一点来通过while(read.readline()!=null)来对文件进行读取,读取的字符串再转换为char数组,这一步完成后,就没啥难度了,暴力就是
import java.io.*;
public class 寻找2020 {
public static void main(String[] args) throws IOException {
BufferedReader bf = new BufferedReader(new InputStreamReader(new FileInputStream("D:\\QQ文件\\2020.txt")));
String s="";
char [][]arr=new char[300][];
int cur=0;
int ans=0;
while((s=bf.readLine())!=null)
{
arr[cur++]=s.toCharArray();
}
for (int i = 0; i < arr.length; i++) {
for (int j = 0; j < arr[i].length; j++) {
if(arr[i][j]=='2')
{
if(i<arr.length-3&&arr[i+1][j]=='0'&&arr[i+2][j]=='2'&&arr[i+3][j]=='0') ans++;//从上往下看
if(j<arr[i].length-3&&arr[i][j+1]=='0'&&arr[i][j+2]=='2'&&arr[i][j+3]=='0') ans++;//从左往右看
if(i<arr.length-3&&j<arr[i].length-3&&arr[i+1][j+1]=='0'&&arr[i+2][j+2]=='2'&&arr[i+3][j+3]=='0') ans++;//斜着看
}
}
}
System.out.println(ans);
}
}