蓝桥杯第十届省赛java组解析(灵能传输 四星难度,后缀表达式 两星难度)

第一题太简单懒得复制题目了答案是:490第二题:试题 B: 不同子串 本题总分:5 分【问题描述】 一个字符串的非空子串是指字符串中长度至少为 1 的连续的一段字符组成 的串。例如,字符串aaab 有非空子串a, b, aa, ab, aaa, aab, aaab,一共 7 个。 注意在计算时,只算本质不同的串的个数。 请问,字符串0100110001010001 有多少...
摘要由CSDN通过智能技术生成

第一题太简单懒得复制题目了

答案是:490

 

第二题:

 

试题 B: 不同子串 本题总分:5 分
【问题描述】 一个字符串的非空子串是指字符串中长度至少为 1 的连续的一段字符组成 的串。例如,字符串aaab 有非空子串a, b, aa, ab, aaa, aab, aaab,一共 7 个。 注意在计算时,只算本质不同的串的个数。 请问,字符串0100110001010001 有多少个不同的非空子串?
【答案提交】
这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一 个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。
 

import java.util.ArrayList;

public class Main {
	public static void main(String[] args) throws Exception{
		String aa="0100110001010001";
		int n=aa.length();
		ArrayList<String> al=new ArrayList();
		for(int i=1;i<=n;i++) {
			for(int j=0;j<=aa.length()-i;j++) {
				String x=aa.substring(j,j+i);
				if(!al.contains(x)) {
					al.add(x);
				}
			}
		}
		System.out.println(al.size());
	}
}

答案:100

 

这题没什么好说的,人脑怎么想,程序怎么写就行了。

 

第三题:

 

试题 C: 数列求值 本题总分:10 分
【问题描述】 给定数列 1, 1, 1, 3, 5, 9, 17, …,从第 4 项开始,每项都是前 3 项的和。求 第 20190324 项的最后 4 位数字。
【答案提交】
这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一 个 4 位整数(提示:答案的千位不为 0),在提交答案时只填写这个整数,填写 多余的内容将无法得分。
 

import java.util.ArrayList;

public class Main {
	public static void main(String[] args) throws Exception{
		long[] arr=new long[3];
		arr[0]=1;
		arr[1]=1;
		arr[2]=1;
		for(int i=4;i<=20190324;i++) {
			long x=(arr[0]+arr[1]+arr[2])%10000;
			arr[0]=arr[1];
			arr[1]=arr[2];
			arr[2]=x;
		}
		System.out.println(arr[2]);
	}
}

 

答案:4659

一个for循环就ojbk,不做分析。

 

第四题:

试题 D: 数的分解 本题总分:10 分
【问题描述】 把 2019 分解成 3 个各不相同的正整数之和,并且要求每个正整数都不包 含数字 2 和 4,一共有多少种不同的分解方法? 注意交换 3 个整数的顺序被视为同一种方法,例如 1000+1001+18 和 1001+1000+18 被视为同一种。
【答案提交】
这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一 个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。
 

 

public class Main {
	public static void main(String[] args) throws Exception{
		int x=2019;//2019/3=673
		int sum=0;
		String aa;
		for(int i1=1;i1<=673;i1++) {//只需要保证三个数从小到大的顺序,那么就不可能出现题目中的重复问题
			aa=String.valueOf(i1);//因为integer类里没有判别元素包含问题的方法,所以就把类型改成string类型然后使用contains方法来判别是否存在"2"和"4"
			if(aa.contains("2")||aa.contains("4"))//值得一提的是api里的对contains括号内的参数类型描述是CharSequence,事实上这个是string类型实现的接口,而非是char类型
				continue;
			for(int i2=i1+1;i2<(2019-i1+1)/2;i2++) {
				aa=String.valueOf(i2);
				if(aa.contains("2")||aa.contains("4"))
					continue;
				
				aa=String.valueOf(2019-i1-i2);
				if(aa.contains("2")||aa.contains("4"))
					continue;
				
				sum++;
			}
		}
		System.out.println(sum);
	}
}

 

答案:40785

题目中的条件就两个,一个是三个不同的数,一个是数不包含2和4,第一个只需要保证三个数从小到大排列即可去掉重复的问题,第二个条件则需要把int类型转变成string类型使用contain方法即可。

 

第五题:

 

试题 E: 迷宫 本题总分:15 分
【问题描述】 下图给出了一个迷宫的平面图,其中标记为 1 的为障碍,标记为 0 的为可 以通行的地方。
010000 000100 001001 110000
迷宫的入口为左上角,出口为右下角,在迷宫中,只能从一个位置走到这 个它的上、下、左、右四个方向之一。 对于上面的迷宫,从入口开始,可以按DRRURRDDDR 的顺序通过迷宫, 一共 10 步。其中 D、U、L、R 分别表示向下、向上、向左、向右走。 对于下面这个更复杂的迷宫(30 行 50 列),请找出一种通过迷宫的方式, 其使用的步数最少,在步数最少的前提下,请找出字典序最小的一个作为答案。 请注意在字典序中D<L<R<U。(如果你把以下文字复制到文本文件中,请务 必检查复制的内容是否与文档中的一致。在试题目录下有一个文件 maze.txt, 内容与下面的文本相同)
00011111000000101000010010100010100000101100000000 11001000110101000010101100011010011010101011110111 00011011010101001001001010000001000101001110000000 
10100000101000100110101010111110011000010000111010 00111000001010100001100010000001000101001100001001 11000110100001110010001001010101010101010001101000 00010000100100000101001010101110100010101010000101 11100100101001001000010000010101010100100100010100 00000010000000101011001111010001100000101010100011 10101010011100001000011000010110011110110100001000 10101010100001101010100101000010100000111011101001 10000000101100010000101100101101001011100000000100 10101001000000010100100001000100000100011110101001 00101001010101101001010100011010101101110000110101 11001010000100001100000010100101000001000111000010 00001000110000110101101000000100101001001000011101 10100101000101000000001110110010110101101010100001 00101000010000110101010000100010001001000100010101 10100001000110010001000010101001010101011111010010 00000100101000000110010100101001000001000000000010 11010000001001110111001001000011101001011011101000 00000110100010001000100000001000011101000000110011 10101000101000100010001111100010101001010000001000 10000010100101001010110000000100101010001011101000 00111100001000010000000110111000000001000000001011 100000011001110101110100010

  • 0
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值