每日小练:Day2
1.乒乓球筐
题目链接:乒乓球筐__牛客网
题目描述:
这道题主要考察B盒是不是A盒的子集,我们可以通过哈希表来做
单哈希表
import java.util.Scanner;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
while(in.hasNext()){
char[] s1=in.next().toCharArray();
char[] s2=in.next().toCharArray();
int[] hash=new int[26];
boolean ret=true;
for(int i=0;i<s1.length;i++){
hash[s1[i]-'A']++;
}
for(int i=0;i<s2.length;i++){
if(--hash[s2[i]-'A']<0){
ret=false;
break;
}
}
if(ret==true){
System.out.println("Yes");
}else{
System.out.println("No");
}
}
}
}
双哈希表
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
while (in.hasNext()) {
char[] s1=in.next().toCharArray();
char[] s2=in.next().toCharArray();
int[] hash1 = new int[26];
int[] hash2 = new int[26];
boolean ret = true;
for (int i = 0; i < s1.length; i++) {
hash1[s1[i]-'A']++;
}
for (int i = 0; i < s2.length; i++) {
hash2[s2[i]-'A']++;
}
for (int i = 0; i < 26; i++) {
if (hash1[i] != hash2[i]) {
ret = false;
break;
}
}
// 输出结果
System.out.println(ret ? "Yes" : "No");
}
in.close(); // 关闭输入流
}
}
2.组队竞赛
题目链接:组队竞赛_牛客网
import java.util.*;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int n=in.nextInt();
int[] arr=new int[n*3];
for(int i=0;i<n*3;i++){
arr[i]=in.nextInt();
}
//先将数组排序
Arrays.sort(arr);
int count =1;
//每次隔着两个数取一次,第一次取得是倒数第二个数,下标是n*3-2
int pos=n*3-2;
long ret=0;
//求每次取出的数的和
while(count++<=n){
ret+=arr[pos];
pos-=2;
}
System.out.println(ret);
}
}
3.删除相邻数字的最大分数(⭐)
题目链接:删除相邻数字的最大分数_牛客题霸_牛客网
题目描述:
注:使用动态规划
import java.util.Scanner;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
static int N=(int)1e4 + 10;
static int[] sum=new int[N];
static int[] f=new int[N];
static int[] g=new int[N];
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int n=in.nextInt();
int x=0;
for(int i=0;i<n;i++){
x=in.nextInt();
sum[x]+=x;
}
for(int i=1;i<N;i++){
f[i]=g[i-1]+sum[i];
g[i]=Math.max(g[i-1],f[i-1]);
}
System.out.println(Math.max(f[N-1],g[N-1]));
}
}
希望能对大家有所帮助!!!!
原文地址:https://blog.csdn.net/blamep/article/details/143749670
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!