首页 > 技术文章 > 2018年校招全国统一模拟笔试(第一场)编程题集合

Tree-dream 2018-03-19 20:35 原文

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 }

 

推荐阅读