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]);
}
}