归并排序
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class 归并排序 {
static int[] arr;
static int[] temp;
public static void main(String[] args) throws NumberFormatException, IOException {
BufferedReader bReader=new BufferedReader(new InputStreamReader(System.in));
int n=Integer.parseInt(bReader.readLine());
String[] strings=bReader.readLine().split(" ");
arr=new int[n];
temp=new int[n];
for(int i=0;i<n;i++) {
arr[i]=Integer.parseInt(strings[i]);
}
mergeSort(0, arr.length-1);
for(int i=0;i<n;i++) {
System.out.print(arr[i]+" ");
}
}
public static void mergeSort(int l,int r) {
if(l>=r) {
return;
}
int mid=l+r>>1;
mergeSort(l, mid);
mergeSort(mid+1, r);
int k=0;
int i=l,j=mid+1;
while(i<=mid&&j<=r) {
if(arr[i]>arr[j]) {
temp[k++]=arr[j++];
}else{
temp[k++]=arr[i++];
}
}
while(i<=mid) {
temp[k++]=arr[i++];
}
while(j<=r) {
temp[k++]=arr[j++];
}
for(i=l,j=0;i<=r;i++,j++) {
arr[i]=temp[j];
}
}
}
哈夫曼树
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Collections;
import java.util.LinkedList;
import java.util.List;
public class 哈夫曼树 {
public static void main(String[] args) throws IOException {
BufferedReader bReader=new BufferedReader(new InputStreamReader(System.in));
int n=Integer.parseInt(bReader.readLine());
String[] splitStrings=bReader.readLine().split(" ");
List<Integer> list=new LinkedList<>();
for(int i=0;i<n;i++) {
list.add(Integer.parseInt(splitStrings[i]));
}
int ans=0;
while(list.size()!=1) {
Collections.sort(list);
Integer a=list.remove(0);
Integer b=list.remove(0);
int sum=a+b;
ans+=sum;
list.add(sum);
}
System.out.println(ans);
}
}
加法分解
import java.util.Scanner;
public class 加法分解 {
public static int n;
public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
n=scanner.nextInt();
f("",n);
}
public static void f(String string,int m) {
if(m==0) {
System.out.println(n+"="+string.substring(1));
return;
}
for(int i=1;i<=m;i++) {
f(string+"+"+i,m-i);
}
}
}
十六进制转八进制
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.math.BigInteger;
public class 十六进制转八进制 {
public static void main(String[] args) throws NumberFormatException, IOException {
BufferedReader bReader=new BufferedReader(new InputStreamReader(System.in));
int n=Integer.parseInt(bReader.readLine());
String[] strings=new String[n];
for(int i=0;i<n;i++) {
strings[i]=bReader.readLine();
}
for(int i=0;i<n;i++) {
String s=strings[i];
BigInteger numBigDecimal=new BigInteger(s,16);
System.out.println(numBigDecimal.toString(8));
}
}
}
饮料换购
import java.util.Scanner;
public class 饮料换购 {
public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
int n=scanner.nextInt();
int ans=0;
int cnt=0;
while(n!=0) {
cnt++;
n--;
ans++;
if(cnt==3) {
cnt=1;
ans++;
}
}
System.out.println(ans);
}
}
回文日期
import java.util.Scanner;
public class 回文日期 {
public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
int n=scanner.nextInt();
int m=scanner.nextInt();
int ans=0;
for(int i=1000;i<=9999;i++) {
int j=reverseNum(i);
int ij=10000*i+j;
if(ij>m||ij<n) {
continue;
}
if(isValid(i, j)) {
ans++;
}
}
System.out.println(ans);
}
public static int reverseNum(int n) {
int m=0;
while(n>0) {
m=m*10+n%10;
n/=10;
}
return m;
}
public static int getDay(int y,int m) {
int[] m1=new int[] {0,31,28,31,30,31,30,31,31,30,31,30,31};
int[] m2=new int[] {0,31,29,31,30,31,30,31,31,30,31,30,31};
if(y%400==0||y%4==0&&y%100!=0) {
return m2[m];
}
else {
return m1[m];
}
}
public static boolean isValid(int y,int n) {
int m=n/100;
int d=n%100;
if(m==0||m>=13) {
return false;
}
int day=getDay(y, m);
if(d==0||d>day) {
return false;
}
return true;
}
}
感冒蚂蚁
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class 感冒蚂蚁 {
public static void main(String[] args) throws NumberFormatException, IOException {
BufferedReader bReader = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(bReader.readLine());
String[] splitStrings = bReader.readLine().split(" ");
int[] arr = new int[n];
for (int i = 0; i < n; i++) {
arr[i] = Integer.parseInt(splitStrings[i]);
}
int ans = 1;
boolean flag = false;
if (arr[0] > 0) {
for (int i = 1; i < n; i++) {
if (Math.abs(arr[i]) > arr[0]) {
if (arr[i] < arr[0]) {
ans++;
flag = true;
}
}
}
for (int i = 1; i < n; i++) {
if (Math.abs(arr[i]) < arr[0]) {
if (arr[i] > 0 && flag) {
ans++;
}
}
}
}
if (arr[0] < 0) {
for (int i = 1; i < n; i++) {
if (Math.abs(arr[0]) > arr[i]) {
if (arr[i] > 0) {
ans++;
flag = true;
}
}
}
for (int i = 1; i < n; i++) {
if (arr[i] < arr[0] && flag) {
ans++;
}
}
}
System.out.println(ans);
}
}
错误票据
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class 错误票据 {
public static void main(String[] args) throws NumberFormatException, IOException {
BufferedReader bReader=new BufferedReader(new InputStreamReader(System.in));
int n=Integer.parseInt(bReader.readLine());
int max=Integer.MIN_VALUE;
int min=Integer.MAX_VALUE;
int[] arr=new int[100001];
for(int i=0;i<n;i++) {
String[] splitStrings=bReader.readLine().split(" ");
for(int j=0;j<splitStrings.length;j++) {
int num=Integer.parseInt(splitStrings[j]);
if(num>max) {
max=num;
}
if(num<min) {
min=num;
}
arr[num]++;
}
}
int ans1=0;
int ans2=0;
for(int i=min;i<=max;i++) {
if(arr[i]==0) {
ans1=i;
}
if(arr[i]==2) {
ans2=i;
}
}
System.out.println(ans1+" "+ans2);
}
}