题库练习5

1. 句子逆序

将一个英文语句以单词为单位逆序排放。例如“I am a boy”,逆序排放后为“boy a am I”。所有单词之间用一个空格隔开,语句中除了英文字母外,不再包含其他字符。

import java.util.*;

public class Main{
    public static void main(String[] args){
        Scanner sc=new Scanner(System.in);
        String str=sc.nextLine();
        System.out.println(new Main().reverse(str));
    }
    public String reverse(String sentence){
        String[] str=sentence.split(" ");
        String res="";
        for(int i=str.length-1;i>0;i--)
            res+=str[i]+" ";
        return res+str[0];
    }
}

2. 字符串排序

给定n个字符串,请对n个字符串按照字典序排列。

import java.util.*;

public class Main{
    public static void main(String[] args){
        Scanner sc=new Scanner(System.in);
        
        int n=Integer.parseInt(sc.nextLine());
        int i=0;
        ArrayList<String> list=new ArrayList<>();
        
        while(i<n){
            list.add(sc.nextLine());
            i++;
        }
        Collections.sort(list);
        for(i=0;i<list.size();i++)
            System.out.println(list.get(i));
    }
}

注:

不去重,只排序。

使用ArrayList存储。排序:Collections.sort(ArrayList al);

3. int型二进制表示中1的个数

输入一个int型的正整数,计算出该int型数据在内存中存储时1的个数。

import java.util.*;

public class Main{
    public static void main(String[] args){
        Scanner sc=new Scanner(System.in);

        int n=Integer.parseInt(sc.nextLine());

        String str=Integer.toBinaryString(n);
        char[] chs=str.toCharArray();
        int count=0;
        for(int i=0;i<chs.length;i++)
            if(chs[i]=='1')
                count++;
        System.out.println(count);
    }
}

注:

1.int转为二进制

String bs = Integer.toBinaryString(value);

4. 购物单

动态规划

import java.util.*;

public class Main{
    public static void main(String[] args){
        Scanner sc=new Scanner(System.in);
        String[] strs=sc.nextLine().split(" ");
        int n=Integer.parseInt(strs[0]);
        int m=Integer.parseInt(strs[1]);
        int[] v=new int[m+1];
        int[] p=new int[m+1];
        int[] q=new int[m+1];
        int i=1;
        while(i<=m){
            strs=sc.nextLine().split(" ");
            v[i]=Integer.parseInt(strs[0]);
            p[i]=Integer.parseInt(strs[1])*v[i];
            q[i]=Integer.parseInt(strs[2]);
            i++;
        }
        
        getResult(v,p,q,n,m);
    }
    
    public static void getResult(int[] v,int[] p,int[] q,int n,int m){
        int[][] res=new int[m+1][n+1];
        for (int i = 1; i <=m; i++) {
            for(int j = 1; j<=n; j++){
                if(q[i] == 0) { 
                    if(v[i] <= j){ 
                        res[i][j] = Math.max(res[i-1][j], res[i-1][j-v[i]] + p[i]);
                    }
                }else{ 
                    if(v[i] + v[q[i]] <= j){  
                        res[i][j] = Math.max(res[i-1][j], res[i-1][j-v[i]] + p[i]);
                    }
                }
            }
        }
        System.out.println(res[m][n]);
    }
}

 

点赞