题一 汽水瓶
1.解法(贪心)
贪心算法,每次使用已有的空瓶数,得到最多数量可以喝的水,接着记录已有的空瓶数,继续算
import java.util.*;
public class Main{
// 要写在主方法中
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
int n = 0;
int sum = 0;
while(sc.hasNext()){
n = sc.nextInt();
// 循环结束的条件
if(n == 0) break;
// sum = 0;
sum = 0;
while(n > 2){
sum += (n / 3);
n = (n % 3) + (n / 3);
}
if(n == 2){
System.out.println(sum+1);
}else{
System.out.println(sum);
}
}
}
}
题二 明明的随机数
使用的是TreeSet,判断是否有重复的数
import java.util.*;
public class Main{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
int n = 0;
TreeSet<Integer> set = new TreeSet<>();
while(sc.hasNext()){
n = sc.nextInt();
set.clear();
// 判断n是否>0 抛弃不正确答案
if(n > 0){
for(int i = 0; i < n; i++){
// 只能加入不重复的数,并且自动有序
set.add(sc.nextInt());
}
}
for(Integer i : set){
System.out.println(i);
}
}
}
}
题三 进制转换
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
while (sc.hasNext()){
StringBuffer sb=new StringBuffer();
sb.append(sc.next());
String str=sb.reverse().substring(0,sb.length()-2);
char ch[]=str.toCharArray();
int sum=0;
for(int i=0;i<ch.length;i++){
// A的ascall码是65
if(ch[i]>='A'&&ch[i]<='F'){
sum+=(Integer.valueOf(ch[i])-55)*Math.pow(16,i);
}else {
sum+=(ch[i] - '0')*Math.pow(16,i);
}
}
System.out.println(sum);
}
}
}