1,买帽子
AC代码如下:
import java.util.HashSet;
import java.util.Scanner;
import java.util.Set;
import java.util.TreeSet;
public class BD001 {
/*买帽子
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc=new Scanner(System.in);
while(sc.hasNext()){
String s=sc.nextLine();
String str=sc.nextLine();
String []arr=str.split(" ");
int []arrInt=new int[arr.length];
Set<Integer> set=new TreeSet();
set=new HashSet();
for(int i=0;i<arr.length;i++){
arrInt[i]=Integer.parseInt(arr[i]);
set.add(arrInt[i]);
}
if(set.size()<3){
System.out.println("-1");
}else{
int count=0;
for(Integer i:set){
count++;
if(count==3){
System.out.println(i);
break;
}
}
}
}
}
}
2,度度熊回家
AC代码如下:
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class BD002 {
/*度度熊回家
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc=new Scanner(System.in);
while(sc.hasNext()){
String s=sc.nextLine();
String str=sc.nextLine();
String []arr=str.split(" ");
List<Integer> list=new ArrayList();
int min=Integer.MAX_VALUE;
for(int i=0;i<arr.length;i++)
list.add(Integer.parseInt(arr[i]));
for(int i=1;i<list.size()-1;i++){
int temp=list.remove(i);
int result=fun(list);
min=min>result?result:min;
list.add(i, temp);
}
System.out.println(min);
}
}
public static int fun(List<Integer> list){
int distance=0;
for(int i=1;i<list.size();i++){
distance+=Math.abs(list.get(i)-list.get(i-1));
}
return distance;
}
}
3,寻找三角形
AC代码如下:
import java.text.DecimalFormat;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class Test003 {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc=new Scanner(System.in);
while(sc.hasNext()){
int N=sc.nextInt();
sc.nextLine();
String []p=new String[N];
for(int i=0;i<N;i++){
p[i]=sc.nextLine();
}
Point[] a=new Point[N];
for(int i=0;i<N;i++){
String []temp=p[i].split(" ");
a[i]=new Point(temp[0], Integer.parseInt(temp[1]), Integer.parseInt(temp[2]), Integer.parseInt(temp[3]));
}
List<Point> list=new ArrayList();
List<List<Point>> result=new ArrayList();
backTracking(a, 0, 3, list, result);
List<List<Point>> readList=new ArrayList();
double max=0.0;
for(int i=0;i<result.size();i++){
List<Point> temp1=result.get(i);
if(temp1.get(0).c.equals(temp1.get(1).c)&&temp1.get(0).c.equals(temp1.get(2).c)||(!temp1.get(0).c.equals(temp1.get(1).c)&&(!temp1.get(0).c.equals(temp1.get(2).c))&&(!temp1.get(1).c.equals(temp1.get(2).c)))){
readList.add(temp1);
}
}
for(int i=0;i<readList.size();i++){
List<Point> temp=readList.get(i);
double area=getArea(temp);
if(area>max){
max=area;
}
}
DecimalFormat f=new DecimalFormat("0.00000");
String format=f.format(max);
System.out.println(format);
}
}
public static double getArea(List<Point> list){
Point a=list.get(0);
Point b=list.get(1);
Point c=list.get(2);
double disab=Math.sqrt((a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y)+(a.z-b.z)*(a.z-b.z));
double disbc=Math.sqrt((b.x-c.x)*(b.x-c.x)+(b.y-c.y)*(b.y-c.y)+(b.z-c.z)*(b.z-c.z));
double disac=Math.sqrt((a.x-c.x)*(a.x-c.x)+(a.y-c.y)*(a.y-c.y)+(a.z-c.z)*(a.z-c.z));
double s=0.5*(disab+disbc+disac);
double area=Math.sqrt(s*(s-disab)*(s-disbc)*(s-disac));
return area;
}
public static void backTracking(Point []a,int start,int k, List<Point> tempList,List<List<Point>> result){
if(k<0)
return;
else if(k==0){
result.add(new ArrayList<Point>(tempList));
}else{
for(int i=start;i<a.length;i++){
tempList.add(a[i]);
backTracking(a, i+1, k-1, tempList, result);
tempList.remove(tempList.size()-1);
}
}
}
}
class Point{
public String c;
public int x;
public int y;
public int z;
public Point(String c,int x,int y,int z){
this.c=c;
this.x=x;
this.y=y;
this.z=z;
}
}
4,有趣的排序
AC代码如下:
import java.util.Arrays;
import java.util.Collections;
import java.util.Scanner;
public class BD004 {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
while(sc.hasNext()){
String s1=sc.nextLine();
String s2=sc.nextLine();
String []arrS=s2.split(" ");
int []arr=new int[arrS.length];
int []result=new int[arr.length];
for(int i=0;i<arrS.length;i++){
arr[i]=Integer.parseInt(arrS[i]);
result[i]=arr[i];
}
Arrays.sort(result);
int count=0;
for(int i=0;i<result.length;i++){
if(arr[i]==result[count])
count++;
}
System.out.println(result.length-count);
}
}
}
5,不等式数列
AC代码如下:
import java.util.Scanner;
public class BD005 {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc=new Scanner(System.in);
while(sc.hasNext()){
String s=sc.nextLine();
String []arr=s.split(" ");
int n=Integer.parseInt(arr[0]);
int k=Integer.parseInt(arr[1]);
int [][]dp=new int[n+1][n+1];
for(int i=1;i<=n;i++){
dp[i][0]=1;
dp[i][i-1]=1;
}
for(int i=2;i<n+1;i++){
for(int j=1;j<=k&&j<i;j++){
dp[i][j]=(dp[i-1][j]+dp[i-1][j-1]+dp[i-1][j]*j+dp[i-1][j-1]*(i-j-1))%2017;
}
}
System.out.println(dp[n][k]);
}
}
}