zoukankan      html  css  js  c++  java
  • 2018年校招全国统一模拟笔试(第一场)编程题集合

    https://www.nowcoder.com/test/9439037/summary

    这一套题做了下,感觉有些题目没什么心情去做,而且好多都忘了,知道是什么算法,但是忘了具体实施了。

    只做了三个水题。。。很惭愧

    题目一:给你一个字符串,要你分别把这些字符向后推N个

    思路:模拟一下即可

     1 import java.util.Scanner;
     2  
     3 public class Main {
     4     public static void main(String[] args) {
     5         Scanner cin = new Scanner(System.in);
     6         String str = cin.nextLine();
     7         String ans = "";
     8         for(int i = 0;i<str.length();i++){
     9             if(str.charAt(i)<='y'&&str.charAt(i)>='a')
    10                 ans+=(char)(str.charAt(i)+1);
    11             else if(str.charAt(i)<='Y'&&str.charAt(i)>='A')
    12                 ans+=(char)(str.charAt(i)+1);
    13             else if(str.charAt(i)=='Z')
    14                 ans+='A';
    15             else if(str.charAt(i)=='z')
    16                 ans+='a';
    17             else
    18                 ans +=str.charAt(i);
    19         }
    20         System.out.println(ans);
    21     }
    22  
    23 }

    题目三:有n个硬币,要用这些银币构成m元,求最多可以使用多少枚硬币(每个硬币只能用一次)

    思路:由于n<=10,所以最多的组合数也就是1024个,所以直接枚举即可

     1 import java.util.*;
     2  
     3 public class Main {
     4     public static void main(String[] args) {
     5         Scanner cin = new Scanner(System.in);
     6         int n = cin.nextInt();
     7         int m = cin.nextInt();
     8         int arr[] = new int [50];
     9         for(int i = 0;i<n;i++)
    10             arr[i] = cin.nextInt();
    11         Arrays.sort(arr,0,n);
    12         int ans = 0;
    13         for(int i = 0;i<=(1<<n);i++){
    14             int tmp = 0;
    15             int cnt = 0;
    16             int tmpi = i;
    17             for(int j = 0;j<n;j++){
    18                 if(tmpi%2!=0){
    19                     tmp+=arr[j];
    20                     cnt++;
    21                 }
    22                 tmpi/=2;
    23             }
    24             if(cnt>ans&&tmp==m)
    25                 ans = cnt;
    26         }
    27         System.out.println(ans);
    28     }
    29 }

    题目五:有一个1-n的序列,要求最少的左右交换次序,使p[i]!=i

    思路:但p[i]==i&&p[i+1]==i+1时交换一次,还有p[i]==i时换一次即可

     1 import java.util.*;
     2  
     3 public class Main {
     4     public static void main(String[] args) {
     5         Scanner cin = new Scanner(System.in);
     6         int m = cin.nextInt();
     7         int arr[] = new int[100005];
     8         for(int i = 1;i<=m;i++){
     9             arr[i] = cin.nextInt();
    10         }
    11         int ans = 0;
    12         for(int i = 1;i<=m;i++){
    13             if(arr[i]==i){
    14                 if(i<m&&arr[i+1]==i+1){
    15                     ans++;
    16                     i++;
    17                 }else
    18                     ans++;
    19             }
    20         }
    21         System.out.println(ans);
    22     }
    23 }

  • 相关阅读:
    [JAVA] 冻结Excel的第一行或第一列
    [SoapUI] 比较两个不同环境下的XML Response, 从外部文件读取允许的偏差值,输出结果到文本文件
    [Study] 通过游戏学编程的网站
    [SoapUI] SoapUI+Groovy中"org.apache.xmlbeans.XmlException: error:
    [SoapUI] 通过Groovy写文本文件
    [SoapUI] context.expand 和 groovyUtils.getXmlHolder 有什么不一样
    Codeforces Round #355 (Div. 2) C 预处理
    Codeforces Round #355 (Div. 2) B
    Codeforces Round #355 (Div. 2) A
    Codeforces Round #324 (Div. 2) D
  • 原文地址:https://www.cnblogs.com/Tree-dream/p/8604564.html
Copyright © 2011-2022 走看看