博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java实现 第十一届 蓝桥杯 (本科组)省内模拟赛(1)
阅读量:3950 次
发布时间:2019-05-24

本文共 3871 字,大约阅读时间需要 12 分钟。

1、括号匹配问题

题目问题描述由1对括号,可以组成一种合法括号序列:()。由2对括号,可以组成两种合法括号序列:()()、(())。由4对括号组成的合法括号序列一共有多少种?

思路:

public class Kuohao {
static int count=0,n=2; public static void main(String[] args) {
f(0,0); System.out.println(count); } private static void f(int left,int right) {
if(left==n) {
count++; return; } f(left+1,right); if(left>right) {
f(left,right+1); } }}
import java.util.Scanner;import java.util.Stack;public class Kuohao {
public static void main(String[] args) {
System.out.println(isValid("[])")); System.out.println(isValid("")); System.out.println(isValid("(]")); System.out.println(isValid("(([]){})")); System.out.println(isValid("([)]")); System.out.println(isValid("[({(())}[()])]")); } public static boolean isValid(String s) {
Stack
st = new Stack
(); for(int i=0;i < s.length();i++){
char temp = s.charAt(i); switch (temp){
case '(': st.push(temp); break; case '[': st.push(temp); break; case '{': st.push(temp); break; case ')': if(!st.empty() && st.peek() == '(') st.pop(); else return false; break; case ']': if(!st.empty() && st.peek() == '[') st.pop(); else return false; break; case '}': if(!st.empty() && st.peek() == '{') st.pop(); else return false; break; } //System.out.println(st.toString()); } if(st.isEmpty()) return true; else return false; }}

2、无向连通图最少包含多少条边

一个包含有2019个结点的无向连通图,最少包含多少条边?

有n个顶点的无向连通图最多有n(n-1)/2条边,最少有n-1条边。

3、字母重新排列

将LANQIAO中的字母重新排列,可以得到不同的单词,如LANQIAO、AAILNOQ等,注意这7个字母都要被用上,单词不一定有具体的英文意义。

请问,总共能排列如多少个不同的单词。

全排列个数:长度*(长度-1)*(长度-2)。。。1

有一个重复的A,所以要除以2,结果是:2520

import java.util.ArrayList;import java.util.HashSet;import java.util.Set;public class Pailie {
public static int count=0; public static ArrayList
list=new ArrayList
(); public static Set
set=new HashSet
(); static String[] strs= {
"L","A","N","Q","I","A","O"}; public static void main(String[] args) {
f(); System.out.println(set.size()); } private static void f() {
if(list.size()>=7) {
StringBuilder s=new StringBuilder(""); for(int i=0;i<=6;i++) {
s.append(strs[list.get(i)-1]); } set.add(s.toString()); return; } for(int i=1;i<=7;i++) {
if(!list.contains(i)) {
list.add(i); //System.out.println(list); f(); list.remove(list.size()-1); } } }}

4、凯撒密码加密

给定一个单词,请使用凯撒密码将这个单词加密。  凯撒密码是一种替换加密的技术,单词中的所有字母都在字母表上向后偏移3位后被替换成密文。  即a变为d,b变为e,…,w变为z,x变为a,y变为b,z变为c。  例如,lanqiao会变成odqtldr。输入格式输入一行,包含一个单词,单词中只包含小写英文字母。输出格式输出一行,表示加密后的密文。样例输入lanqiao样例输出odqtldr评测用例规模与约定对于所有评测用例,单词中的字母个数不超过100。
public class Serct {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in); String s1=sc.next(); char[] arr=s1.toCharArray(); for(int i=0;i
41||arr[i]<65) {
arr[i]=(char) (arr[i]+26+3+3); } arr[i]+=3; } for(int i=0;i

5、反倍数

问题描述给定三个整数 a, b, c,如果一个整数既不是 a 的整数倍也不是 b 的整数倍还不是 c 的整数倍,则这个数称为反倍数。  请问在 1 至 n 中有多少个反倍数。输入格式输入的第一行包含一个整数 n。  第二行包含三个整数 a, b, c,相邻两个数之间用一个空格分隔。输出格式输出一行包含一个整数,表示答案。样例输入302 3 6样例输出10样例说明以下这些数满足要求:1, 5, 7, 11, 13, 17, 19, 23, 25, 29。

抄自

https://blog.csdn.net/a1439775520/article/details/105495876
你可能感兴趣的文章
java模板引擎中主要三个JSP,Freemarker,Velocity简述
查看>>
javascript学习之$(function() {})
查看>>
kafka初识
查看>>
mysql存储过程 --游标的使用 取每行记录
查看>>
ranger通过web界面登录用户验证类UsernamePasswordAuthenticationFilter
查看>>
墨菲定律——生活
查看>>
墨菲定律——职场
查看>>
mysql学习使用二(更新)
查看>>
java匿名内部类原理及使用
查看>>
java基础学习之Timer定时器使用
查看>>
Linux中修改环境变量及快速生效方法
查看>>
Linux学习 - vi/vim 编辑器显示行号
查看>>
linux 卸载python
查看>>
Linux下安装Python2.7与升级至2.7
查看>>
winscp连接linux虚拟机失败
查看>>
解决报错 “build.sh /bin/bash^M: 坏的解释器:没有那个文件或目录”
查看>>
linux学习之tr操作符用法
查看>>
shell的dirname $0和readlink用法
查看>>
linux软连接指向修改
查看>>
Android开发——Crash捕获SDK是如何捕获Application中onCreate的崩溃信息的
查看>>