声明:蓝桥杯练习系统中的Java环境为1.8.0
ALGO-1
import java.util.*;
/** * 该题最容易犯错的一个点就是,你会先排序,再选出来数,但是 * 题中的要求意思是,先选数再排序,切记! */
public class Main {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
//输入数n表示序列的长度
int n=sc.nextInt();
int[] a=new int[n];
//将输入的序列数存入数组中
for (int i = 0; i < a.length; i++) {
a[i]=sc.nextInt();
}
//输入询问个数m
int m=sc.nextInt();
int[] result=new int[m];
for (int i = 0; i < m; i++) {
//第i+1次询问
int l=sc.nextInt();
int r=sc.nextInt();
int k=sc.nextInt();
int[] c=sort(a,l,r);
//将获取到的第K大数存入数组中
result[i]=c[c.length-k];
}
//循环输出结果
for (int i = 0; i < result.length; i++) {
System.out.println(result[i]);
}
}
//按照要求排序566
static int[] sort(int[] a,int l,int r){
//定义排序好的数组
int[] b=new int[r-l+1];
for (int i = 0; i < b.length; i++) {
//将选定区间的数存入数组中
b[i]=a[l-1+i];
}
Arrays.sort(b);
return b;
}
}
ALGO-2
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
// 输入数n表示序列的长度
long N = sc.nextLong();
System.out.println(getMax(N));
}
static long getMax(long n) {
if (n < 3)
return 2;
// 如果n为奇数
if (n % 2 == 1) {
return n * (n - 1) * (n - 2);
} else {
// 如果n为偶数
if (n % 3 == 0) {
return (n - 1) * (n - 2) * (n - 3);
} else {
return n * (n - 1) * (n - 3);
}
}
}
}
ALGO-3
遇到不会的题,多读几遍题,多研究,总有那么一瞬间你会恍然大悟的
package test;
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner reader = new Scanner(System.in);
// 输入K值
int k = reader.nextInt();
// 输入l的值
int l = reader.nextInt();
// 这个二维数组里面存放符合题意的数
int[][] KGood = new int[l][k];
// 首先当l=1的时候,所有的条件都满足,注意是从1开始
for (int i = 1; i < k; i++) {
KGood[0][i] = 1;
}
// 开始寻找两位数
// i表示的是第几位
for (int i = 1; i < l; i++) {
// 第i位的数
for (int j = 0; j < k; j++) {
// 遍历每一位的数,然后进行比较看是否符合题意
for (int m = 0; m < k; m++) {
if (j != m - 1 && j != m + 1) {
KGood[i][j]+=KGood[i-1][m];
KGood[i][j]%=1000000007;
}
}
}
}
int sum = 0;
for (int i = 0; i < k; i++) {
sum+=KGood[l-1][i];
sum=sum%1000000007;
}
System.out.println(sum);
}
}