题目描述
小蓝正在学习一门神奇的语言,这门语言中的单词都是由小写英文字母组 成,有些单词很长,远远超过正常英文单词的长度。小蓝学了很长时间也记不住一些单词,他准备不再完全记忆这些单词,而是根据单词中哪个字母出现得最多来分辨单词。
现在,请你帮助小蓝,给了一个单词后,帮助他找到出现最多的字母和这 个字母出现的次数。
输入描述
输入一行包含一个单词,单词只由小写英文字母组成。
对于所有的评测用例,输入的单词长度不超过 1000。
输出描述
输出两行,第一行包含一个英文字母,表示单词中出现得最多的字母是哪 个。如果有多个字母出现的次数相等,输出字典序最小的那个。
第二行包含一个整数,表示出现得最多的那个字母在单词中出现的次数。
样例">输入输出样例
示例 1
输入:
lanqiao
输出:
a
2
输入:
longlonglongistoolong
输出:
o
6
import java.util.*;
public class Main{
public static void main(String[] args){
int[] a=new int[26];
int j,i=0;
Scanner scan=new Scanner(System.in);
String str=scan.nextLine();
for(i=0;i<str.length();i++)
a[str.charAt(i)-'a']++;
int max=a[0];
int index=0;
for( i=1;i<26;i++)
if(a[i]>max){max=a[i];index=i;}
System.out.println((char)(index+'a'));
System.out.println(a[index]);
}
}
题目描述
上图给出了一个数字三角形。从三角形的顶部到底部有很多条不同的路径。对于每条路径,把路径上面的数加起来可以得到一个和,你的任务就是找到最大的和。
路径上的每一步只能从一个数走到下一层和它最近的左边的那个数或者右 边的那个数。此外,向左下走的次数与向右下走的次数相差不能超过 1。
输入描述
输入的第一行包含一个整数 N\ (1 \leq N \leq 100)N (1≤N≤100),表示三角形的行数。
下面的 NN 行给出数字三角形。数字三角形上的数都是 0 至 100 之间的整数。
输出描述
输出一个整数,表示答案。
输入输出样例
示例
输入
5
7
3 8
8 1 0
2 7 4 4
4 5 2 6 5
输出
27
//题目要求:此外,向左下走的次数与向右下走的次数相差不能超过 1
//最大值最终会落到最后一层的中间
import java.util.*;
public class Main{
public static void main(String[] args){
Scanner scanner = new Scanner(System.in);
int a = scanner.nextInt();
int[][] b=new int[a][a];
for (int i=0;i<a;i++){
for (int j=0;j<=i;j++){
b[i][j]= scanner.nextInt();
}
}
for (int i=1;i<a;i++){//1-4
for (int j=0;j<=i;j++){//
if(j==0)
b[i][j]=b[i][j]+b[i-1][0];
else if (j==i){
b[i][j]=b[i][j]+b[i-1][i-1];
}else {
b[i][j]=Math.max(b[i][j]+b[i-1][j-1],b[i][j]+b[i-1][j]);
}
}
}
if(a%2==0){
System.out.println(Math.max(b[a-1][a/2-1],b[a-1][a/2]));
}else {
System.out.println(b[a-1][a/2]);
}
}
}