2018年校招全國統一模擬筆試(第一場)編程題集合

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

這一套題作了下,感受有些題目沒什麼心情去作,並且好多都忘了,知道是什麼算法,可是忘了具體實施了。算法

只作了三個水題。。。很慚愧spa

題目一:給你一個字符串,要你分別把這些字符向後推N個code

思路:模擬一下便可blog

 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元,求最多能夠使用多少枚硬幣(每一個硬幣只能用一次)ci

思路:因爲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]!=iget

思路:但p[i]==i&&p[i+1]==i+1時交換一次,還有p[i]==i時換一次便可io

 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 }
相關文章
相關標籤/搜索