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 }