本文共 3871 字,大约阅读时间需要 12 分钟。
题目问题描述由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) { Stackst = 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; }}
一个包含有2019个结点的无向连通图,最少包含多少条边?
有n个顶点的无向连通图最多有n(n-1)/2条边,最少有n-1条边。
将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 ArrayListlist=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); } } }}
给定一个单词,请使用凯撒密码将这个单词加密。 凯撒密码是一种替换加密的技术,单词中的所有字母都在字母表上向后偏移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;i41||arr[i]<65) { arr[i]=(char) (arr[i]+26+3+3); } arr[i]+=3; } for(int i=0;i
问题描述给定三个整数 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