1.网易-合唱团
import java.util.Scanner;
public class Main {
public static void main(String[] args){
Scanner sc=new Scanner(System.in);
while(sc.hasNext()){
int n=sc.nextInt(); //获取学生的人数
int[] arr=new int[n+1]; //创建一个表示学生能力的数组,第i个数等于第i个人的能力
//对学生能力进行初始化
for(int i=1;i<=n;i++){
arr[i]=sc.nextInt();
}
int kk=sc.nextInt(); //选择的学生数
int d=sc.nextInt(); //间距
//人直接对应坐标,n和kk都要加一
long[][] f=new long[n+1][kk+1];
long[][] g=new long[n+1][kk+1];
//初始化k=1的情况
for(int one=1;one<=n;one++){
f[one][1]=arr[one];
g[one][1]=arr[one];
}
//自底向上递推
for(int k=2;k<=kk;k++){
for(int one=k;one<=n;one++){
long tempmax=Long.MIN_VALUE;
long tempmin=Long.MAX_VALUE;
for(int left=Math.max(k-1,one-d);left<=one-1;left++){
if(tempmax<Math.max(f[left][k-1]*arr[one], g[left][k-1]*arr[one])){
tempmax=Math.max(f[left][k-1]*arr[one], g[left][k-1]*arr[one]);
}
if(tempmin>Math.min(f[left][k-1]*arr[one], g[left][k-1]*arr[one])){
tempmin=Math.min(f[left][k-1]*arr[one], g[left][k-1]*arr[one]);
}
}
f[one][k]=tempmax;
g[one][k]=tempmin;
}
}
//然后n选k需要从最后一个最大的位置选
long result=Long.MIN_VALUE;
for(int one=kk;one<=n;one++){
if(result<f[one][kk]){
result=f[one][kk];
}
}
System.out.println(result);
}
}
}
2.猪八戒-数串
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import java.util.Scanner;
public class Main {
public static void main(String[] args){
Scanner sc=new Scanner(System.in);
while(sc.hasNext()){
//数的个数n,以及把n个数存到list里面
int n=sc.nextInt();
List<Integer> list=new ArrayList<Integer>();
for(int i=0;i<n;i++){
list.add(sc.nextInt());
}
Collections.sort(list, new Comparator<Integer>() {
@Override
public int compare(Integer o1, Integer o2) {
String s1=String.valueOf(o1);
String s2=String.valueOf(o2);
return (s2+s1).compareTo(s1+s2);
}
});
for(int i=0;i<list.size();i++){
System.out.print(list.get(i));
}
System.out.println();
}
}
}
3.网易-优雅的点
import java.util.Scanner;
public class Main {
public static void main(String[] args){
Scanner sc=new Scanner(System.in);
int r2=sc.nextInt();//得到半径的平方
double r=Math.sqrt(r2);//开方得到半径
int count=0;
for(int x=0;x<r;x++){
double j=Math.sqrt(r2-x*x);
if((int)j==j){
count++;
}
}
System.out.println(count<<2);
}
}
4.网易-下厨房
import java.util.HashSet;
import java.util.Scanner;
public class Main {
public static void main(String[] args){
Scanner sc=new Scanner(System.in);
HashSet<String> set=new HashSet<>();
while(sc.hasNext()){
String[] str=sc.nextLine().split(" ");
for(int i=0;i<str.length;i++){
set.add(str[i]);
}
}
System.out.println(set.size());
}
}
5.网易有道-洗牌
import java.util.ArrayList;
import java.util.Scanner;
import java.util.Stack;
public class Main {
public static ArrayList<Integer> shuffle(ArrayList<Integer> arr){
ArrayList<Integer> tmp=new ArrayList<>();
int times=arr.get(1); //取到了次数
for(int timesTmp=1;timesTmp<=times;timesTmp++){
int middle=(arr.size()-2)/2+1; // middle就是左手最后一个,arr.size-1是右手最后一个
int end=arr.size()-1;
Stack<Integer> stack=new Stack<>(); //把数都存到堆栈里
while(middle>1){
stack.push(arr.get(end));
stack.push(arr.get(middle));
end--;
middle--;
}
//洗牌一次结束以后要把arr给改掉,在前一次洗牌的基础上进行下一次洗牌
for(int i=2;i<arr.size();i++){
arr.set(i, stack.pop());
}
}
//前两个数不要了
for(int i=2;i<arr.size();i++){
tmp.add(arr.get(i));
}
return tmp;
}
public static void main(String[] args){
Scanner sc=new Scanner(System.in);
int t=sc.nextInt();//一共有几组数据
while(t--!=0){
int number=sc.nextInt(); //第一组数的个数
int times=sc.nextInt(); //第一组数洗牌的次数
ArrayList<Integer> arr=new ArrayList<>();
arr.add(number);
arr.add(times);
for(int i=0;i<number*2;i++){
arr.add(sc.nextInt());
}
ArrayList<Integer> result=shuffle(arr);
for(int i=0;i<result.size()-1;i++){
System.out.print(result.get(i)+" ");
}
System.out.println(result.get(result.size()-1));
}
}
}
6.网易-回文序列
import java.util.ArrayList;
import java.util.Scanner;
public class Main {
public static void main(String[] args){
Scanner sc=new Scanner(System.in);
while(sc.hasNext()){
//n数的个数
int n=sc.nextInt();
//把n个数存到一个ArrayList里
ArrayList<Integer> list=new ArrayList<>();
for(int i=0;i<n;i++){
list.add(sc.nextInt());
}
int count=0;
while(list.size()>1){
if(list.get(0)<list.get(list.size()-1)){
int a=list.get(0);
int b=list.get(1);
list.set(1, a+b);
list.remove(0);
count++;
}else if(list.get(0)>list.get(list.size()-1)){
int a=list.get(list.size()-1);
int b=list.get(list.size()-2);
list.set(list.size()-2, a+b);
list.remove(list.size()-1);
count++;
}else{ //如果相等
list.remove(0);
list.remove(list.size()-1);
}
}
System.out.println(count);
}
}
}
7.小米-句子反转
import java.util.Scanner;
public class Main {
public static String reverse(String str){
StringBuilder sb=new StringBuilder();
for(int i=str.length()-1;i>=0;i--){
sb.append(str.charAt(i));
}
return sb.toString();
}
//先翻转整个句子,再翻转句子里面的每个单词
public static void main(String[] args){
Scanner sc=new Scanner(System.in);
while(sc.hasNext()){
String str=sc.nextLine();
String reStr=reverse(str);
String[] sentence=reStr.split(" ");
StringBuilder sb=new StringBuilder();
for(int i=0;i<sentence.length-1;i++){
System.out.print(reverse(sentence[i])+" ");
}
System.out.print(reverse(sentence[sentence.length-1]));
}
}
}
8.网易-数字翻转
import java.util.Scanner;
public class Main {
public static void main(String[] args){
Scanner sc=new Scanner(System.in);
int x=sc.nextInt();
int y=sc.nextInt();
int sum=reverseNum(x)+reverseNum(y);
System.out.println(reverseNum(sum));
}
public static int reverseNum(int x){
StringBuilder sb=new StringBuilder();
String strx=String.valueOf(x);
for(int i=strx.length()-1;i>=0;i--){
sb.append(strx.charAt(i));
}
return Integer.valueOf(sb.toString());
}
}
9.滴滴出行-连续最大和
import java.util.Scanner;
public class Main {
public static void main(String[] args){
Scanner sc=new Scanner(System.in);
int n=sc.nextInt();//一共有n个数
while(sc.hasNext()){
int[] arr=new int[n];
for(int i=0;i<n;i++){
arr[i]=sc.nextInt();
}
int max=arr[0];
int cur=arr[0];
for(int i=1;i<n;i++){
if(cur<0){
cur=arr[i];
}else{
cur+=arr[i];
}
if(cur>max){
max=cur;
}
}
System.out.print(max);
}
}
}
10.挖财-水仙花数
import java.util.ArrayList;
import java.util.Scanner;
public class Main {
public static boolean isNarcissisticNumber(int n){
String str=String.valueOf(n);
int[] arr=new int[str.length()];
for(int i=0;i<arr.length;i++){
arr[i]=Integer.valueOf(str.charAt(i)-48);
}
int result=0;
for(int i=0;i<arr.length;i++){
result+=Math.pow(arr[i], 3);
}
if(result==n){
return true;
}
return false;
}
public static void main(String[] args){
Scanner sc=new Scanner(System.in);
while(sc.hasNext()){
int m=sc.nextInt();
int n=sc.nextInt();
ArrayList<Integer> result=new ArrayList<>();
for(int i=m;i<=n;i++){
if(isNarcissisticNumber(i)){
result.add(i);
}else{
continue;
}
}
if(result.isEmpty()){
System.out.println("no");
}else{
for(int i=0;i<result.size()-1;i++){
System.out.print(result.get(i)+" ");
}
System.out.print(result.get(result.size()-1));
}
}
}
}
11.网易-分苹果
import java.util.Scanner;
public class Main {
public static void main(String[] args){
Scanner sc=new Scanner(System.in);
int n=sc.nextInt(); //4
while(sc.hasNext()){
int[] a=new int[n];
int sum=0;
for(int i=0;i<n;i++){
a[i]=sc.nextInt();
sum+=a[i];
}
//System.out.println("sum:"+sum);
int[] dif=new int[n];
int average=0;
if(sum%n!=0){
System.out.print(-1);
return;
}else{//如果n可以整除sum
average=sum/n;
//System.out.println("average:"+average);
for(int i=0;i<n;i++){
dif[i]=a[i]-average;//每一只牛有的苹果和平均数的差值
if(dif[i]%2==0){
continue;
}else{
System.out.print(-1);
return;
}
}
}
int count=0;
int sumdif=0;
for(int i=0;i<n;i++){
if(dif[i]>0){
sumdif+=dif[i];
}else{
continue;
}
}
//System.out.println("sumdif:"+sumdif);
count=sumdif/2;
System.out.print(count);
}
}
}
12.网易-买苹果
import java.util.ArrayList;
import java.util.Scanner;
public class Main {
public static void main(String[] args){
Scanner sc=new Scanner(System.in);
//想买n个苹果
int n=sc.nextInt();
ArrayList<Integer> steps=new ArrayList<>();
//把steps数组里的值都先初始化为Integer.max,如果是max的话说明不可达,即不能恰好买i个苹果
for(int i=0;i<=n;i++){
steps.add(Integer.MAX_VALUE);
}
//购买第0个
steps.set(0, 0);
if(n>=6){
steps.set(6, 1);
}
if(n>=8){
steps.set(8, 1);
}
for(int i=6;i<=n;i++){
if(steps.get(i)==Integer.MAX_VALUE){
continue;
}else{
if(i+6<=n){
int min=Math.min(steps.get(i)+1, steps.get(i+6));
steps.set(i+6, min);
}
if(i+8<=n){
int min=Math.min(steps.get(i)+1, steps.get(i+8));
steps.set(i+8, min);
}
}
}
if(steps.get(n)==Integer.MAX_VALUE){
System.out.print(-1);
}else{
System.out.print(steps.get(n));
}
}
}
13.京东-幸运数
import java.util.Scanner;
public class Main {
// f(x)表示把x这个数用十进制写出后各个数位上的数字之和
public static int f(int x){
int sum=0;
while(x!=0){
sum+=x%10;
x=x/10;
}
return sum;
}
//g(x)表示把x这个数用二进制写出后各个数位上的数字之和
public static int g(int x){
int sum=0;
while(x!=0){
sum+=x%2;
x=x/2;
}
return sum;
}
public static void main(String[] args){
Scanner sc=new Scanner(System.in);
int n=sc.nextInt();//n<=100000
int count=0;
for(int i=1;i<=n;i++){
if(f(i)==g(i)){
count++;
}
}
System.out.println(count);
}
}
14.网易-Fibonacci数列
import java.util.Scanner;
public class Main {
public static void main(String[] args){
Scanner sc=new Scanner(System.in);
int n=sc.nextInt(); //输入的数字
int a=0;
int b=1;
while(b<=n){
b=a+b; //把b往下一个
a=b-a; //把a往下一个
}
//b>n时就得到了最接近n的那两个数,一个是b,一个是a
int result=(b-n)>(n-a)?n-a:b-n;
System.out.println(result);
}
}
15.网易-计算糖果
import java.util.Scanner;
public class Main {
public static void main(String[] args){
Scanner sc=new Scanner(System.in);
int[] arr=new int[4];
int A=0;
int B=0;
int C=0;
for(int i=0;i<4;i++){
arr[i]=sc.nextInt();
}
if((arr[0]+arr[2])%2==0){
A=(arr[0]+arr[2])/2;
}else{
System.out.println("No");
return;
}
if((arr[1]+arr[3])%2==0){
B=(arr[1]+arr[3])/2;
}else{
System.out.println("No");
return;
}
C=arr[3]-B;
if(A<0||B<0||C<0){
System.out.println("No");
return;
}
System.out.print(A+" "+B+" "+C);
}
}
16.挖财-求数列的和
import java.util.Scanner;
public class Main {
public static void main(String[] args){
Scanner sc=new Scanner(System.in);
double n=sc.nextInt();
int m=sc.nextInt();
double sum=0;
for(int i=m;i>0;i--){
sum+=n;
n=Math.sqrt(n);
}
System.out.println(String.format("%.2f", sum));
}
}
17.网易-星际穿越
import java.util.Scanner;
public class Main {
public static void main(String[] args){
Scanner sc=new Scanner(System.in);
while(sc.hasNext()){ //针对每一组
long h=sc.nextLong();
//用二分
long x=(long) Math.pow(h, 0.5);
if(x*(x+1)>h){
System.out.println(x-1);
}else{
System.out.println(x);
}
}
}
}
18.京东-集合
import java.util.TreeSet;
import java.util.Scanner;
public class Main{
public static void main(String[] args){
Scanner sc=new Scanner(System.in);
//每一个输入包括三行
int n=sc.nextInt();//第一个集合有几个数字
int m=sc.nextInt();//第二个集合有几个数字
TreeSet<Integer> set=new TreeSet<Integer>();
int num=n+m;
while(num--!=0){
set.add(sc.nextInt());
}
Object[] arr=set.toArray();
for(int i=0;i<arr.length-1;i++){
System.out.print(arr[i]+" ");
}
System.out.print(arr[arr.length-1]);
}
}
19.网易-解救小易
import java.util.Scanner;
public class Main {
public static void main(String[] args){
Scanner sc=new Scanner(System.in);
while(sc.hasNext()){
//获取陷阱的数量
int traps=sc.nextInt();
int[][] positions=new int[traps][2];
for(int i=0;i<traps;i++){
positions[i][0]=sc.nextInt();
}
for(int i=0;i<traps;i++){
positions[i][1]=sc.nextInt();
}
int min=positions[0][0]-1+positions[0][1]-1;
int num=0;
for(int i=1;i<traps;i++){
num=positions[i][0]-1+positions[i][1]-1;
if(min>num){
min=num;
}
}
System.out.println(min);
}
}
}
20.腾讯-游戏任务标记
import java.util.Scanner;
public class Main {
public static void main(String[] args){
Scanner sc=new Scanner(System.in);
while(sc.hasNext()){
int first=sc.nextInt();
int second=sc.nextInt();
if(first<1||first>1024||second<1||second>1024){
System.out.println(-1);
}else{
if(first==second){
System.out.println(1);
}
if(first!=second){
System.out.println(0);
}
}
}
}
}
21.美团点评-网格走法数目
import java.util.Scanner;
public class Main {
public static void main(String[] args){
Scanner sc=new Scanner(System.in);
//获取到网格的长和宽
int x=sc.nextInt();
int y=sc.nextInt();
int[][] f=new int[11][11];
f[0][0]=0;
for(int i=0;i<=x;i++){
f[i][0]=1;
}
for(int j=0;j<=y;j++){
f[0][j]=1;
}
for(int i=1;i<=x;i++){
for(int j=1;j<=y;j++){
f[i][j]=f[i-1][j]+f[i][j-1];
}
}
System.out.print(f[x][y]);
}
}
22.去哪儿网-身份证分组
import java.util.Scanner;
public class Main {
public static void main(String[] args){
Scanner sc=new Scanner(System.in);
String str=sc.nextLine();
str=str.replace(" ", "");
int len=str.length();
for(int i=0;i<len;i++){
if(i==5||i==13){
System.out.print(str.charAt(i)+" ");
}else{
System.out.print(str.charAt(i));
}
}
}
}
23.网易-地牢逃脱
import java.util.LinkedList;
import java.util.Queue;
import java.util.Scanner;
public class Main {
public static void main(String[] args){
Scanner sc=new Scanner(System.in);
while(sc.hasNext()){
//得到地牢的行和列
int n=sc.nextInt();
int m=sc.nextInt();
char[][] map=new char[n][m];
int[][] tar=new int[n][m]; //每个位置的访问标记,如果是1的话表示已经访问
for(int i=0;i<n;i++){
String str=sc.next();
map[i]=str.toCharArray();
}
int startx=sc.nextInt();
int starty=sc.nextInt();
int k=sc.nextInt();
int[] stepx=new int[k];
int[] stepy=new int[k];
for(int i=0;i<k;i++){
stepx[i]=sc.nextInt();
stepy[i]=sc.nextInt();
}
//至此,所有输入的参数都接收完毕
Queue<Integer> xqueue=new LinkedList<>();
Queue<Integer> yqueue=new LinkedList<>();
//引入队列是为了遍历到最后不能走为止??
xqueue.add(startx);
yqueue.add(starty);
tar[startx][starty]=1; //起始点访问标记,标记为1表示已经访问
while(!xqueue.isEmpty()&&!yqueue.isEmpty()){
startx=xqueue.remove();
starty=yqueue.remove();
for(int i=0;i<k;i++){
//如果没有越界的话,即如果没有出了地图的话
if(startx+stepx[i]<n&&startx+stepx[i]>=0&&starty+stepy[i]<m&&starty+stepy[i]>=0){
if(tar[startx+stepx[i]][starty+stepy[i]]==0){
if(map[startx+stepx[i]][starty+stepy[i]]=='.'){
tar[startx+stepx[i]][starty+stepy[i]]=tar[startx][starty]+1;
xqueue.add(startx+stepx[i]);
yqueue.add(starty+stepy[i]);
}else{
tar[startx+stepx[i]][starty+stepy[i]]=-1;
}
}
}
}
}
int max=0;
int getRoad=1;
for(int i=0;i<n;i++){
for(int j=0;j<m;j++){
if(map[i][j]=='.'&&tar[i][j]==0){
getRoad=0;
}
max=Math.max(max, tar[i][j]);
}
}
if(getRoad==0){
System.out.println(-1);
}else{
System.out.println(max-1);
}
}
}
}
24.小米-电话号码分身
import java.util.Scanner;
public class Main {
public static void minDoppelgangerOfNum(String str){
//times记录每一个数字出现的次数
int[] times=new int[10];
for(int i=0;i<10;i++){
times[i]=0;
}
StringBuilder sb=new StringBuilder(str);
while(sb.indexOf("Z")!=-1){
times[0]++;//0
sb.deleteCharAt(sb.indexOf("Z"));
sb.deleteCharAt(sb.indexOf("E"));
sb.deleteCharAt(sb.indexOf("R"));
sb.deleteCharAt(sb.indexOf("O"));
}
while(sb.indexOf("W")!=-1){
times[2]++;//2
sb.deleteCharAt(sb.indexOf("T"));
sb.deleteCharAt(sb.indexOf("W"));
sb.deleteCharAt(sb.indexOf("O"));
}
while(sb.indexOf("U")!=-1){
times[4]++;//4
sb.deleteCharAt(sb.indexOf("F"));
sb.deleteCharAt(sb.indexOf("O"));
sb.deleteCharAt(sb.indexOf("U"));
sb.deleteCharAt(sb.indexOf("R"));
}
while(sb.indexOf("X")!=-1){
times[6]++;//6
sb.deleteCharAt(sb.indexOf("S"));
sb.deleteCharAt(sb.indexOf("I"));
sb.deleteCharAt(sb.indexOf("X"));
}
while(sb.indexOf("G")!=-1){
times[8]++;//8
sb.deleteCharAt(sb.indexOf("E"));
sb.deleteCharAt(sb.indexOf("I"));
sb.deleteCharAt(sb.indexOf("G"));
sb.deleteCharAt(sb.indexOf("H"));
sb.deleteCharAt(sb.indexOf("T"));
}
while(sb.indexOf("O")!=-1){
times[1]++;//1
sb.deleteCharAt(sb.indexOf("O"));
sb.deleteCharAt(sb.indexOf("N"));
sb.deleteCharAt(sb.indexOf("E"));
}
while(sb.indexOf("H")!=-1){
times[3]++;//3
sb.deleteCharAt(sb.indexOf("T"));
sb.deleteCharAt(sb.indexOf("H"));
sb.deleteCharAt(sb.indexOf("R"));
sb.deleteCharAt(sb.indexOf("E"));
sb.deleteCharAt(sb.indexOf("E"));
}
while(sb.indexOf("F")!=-1){
times[5]++;//5
sb.deleteCharAt(sb.indexOf("F"));
sb.deleteCharAt(sb.indexOf("I"));
sb.deleteCharAt(sb.indexOf("V"));
sb.deleteCharAt(sb.indexOf("E"));
}
while(sb.indexOf("S")!=-1){
times[7]++;//7
sb.deleteCharAt(sb.indexOf("S"));
sb.deleteCharAt(sb.indexOf("E"));
sb.deleteCharAt(sb.indexOf("V"));
sb.deleteCharAt(sb.indexOf("E"));
sb.deleteCharAt(sb.indexOf("N"));
}
while(sb.indexOf("I")!=-1){
times[9]++;//9
sb.deleteCharAt(sb.indexOf("N"));
sb.deleteCharAt(sb.indexOf("I"));
sb.deleteCharAt(sb.indexOf("N"));
sb.deleteCharAt(sb.indexOf("E"));
}
//映射:times:str中的数字 cast:对应到电话号码里的数字
int[] cast=new int[10];
for(int i=0;i<10;i++){
cast[i]=times[(i+8)%10];
//System.out.print(cast[i]);
}
//得到0-9这10个数字在电话号码里面各自出现的次数
//StringBuilder res=new StringBuilder();
for(int i=0;i<10;i++){
if(cast[i]==0){
continue;
}else{
for(int j=0;j<cast[i];j++){
System.out.print(i);
}
}
}
System.out.println();
}
public static void main(String[] args){
Scanner sc=new Scanner(System.in);
int n=sc.nextInt(); //获取测试样例个数
while(n--!=0){
String str=sc.next();
//System.out.println(str);
minDoppelgangerOfNum(str);
}
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)