1. 程式人生 > >【藍橋杯】根據給定的手機尾號(4位),按照一定的規則來打分

【藍橋杯】根據給定的手機尾號(4位),按照一定的規則來打分

import java.util.Scanner;

/**
 * 
 *30年的改革開放,給中國帶來了翻天覆地的變化。2011全年中國手機產量約為11.72億部。手機已經成為百姓的基本日用品!
 *
 *給手機選個好聽又好記的號碼可能是許多人的心願。但號源有限,只能輔以有償選號的方法了。
 *
 * 這個程式的目的就是:根據給定的手機尾號(4位),按照一定的規則來打分。其規則如下:
 *
 *   1. 如果出現連號,不管升序還是降序,都加5分。例如:5678,4321都滿足加分標準。
 *
 *   2. 前三個數字相同,或後三個數字相同,都加3分。例如:4888,6665,7777都滿足加分的標準。注意:7777因為滿足這條標準兩次,所以這條規則給它加了6分。
 *
 *   3. 符合AABB或者ABAB模式的加1分。例如:2255,3939,7777都符合這個模式,所以都被加分。注意:7777因為滿足這條標準兩次,所以這條標準給它加了2分。
 *
 *   4. 含有:6,8,9中任何一個數字,每出現一次加1分。例如4326,6875,9918都符合加分標準。其中,6875被加2分;9918被加3分。
 *
 * 尾號最終得分就是每條標準的加分總和!
 *
 * 要求程式從標準輸入接收資料,在標準輸出上輸出結果。
 *
 * 輸入格式為:第一行是一個整數n(<100),表示下邊有多少輸入行,接下來是n行4位一組的資料,就是等待計算加分的手機尾號。
 * 輸出格式為:n行整數。
 *例如,輸入:
 *14
 *3045
 *0211
 *2345
 *6543
 *7777
 *8888
 *7878
 *7788
 *6688
 *2424
 *2244
 *9918
 *6789
 *8866
 *則輸出:
 *0
 *0
 *5
 *6
 *8
 *12
 *3
 *3
 *5
 *1
 *1
 *3
 *8
 *5
 * @author xiaoping
 *
 */
public class Main8 {
	public static void main(String[] args) {
		Scanner sc =new Scanner(System.in);
		int n = sc.nextInt();
		String[] strs = new String[n];
		for (int i = 0; i < n; i++) {
			strs[i] = sc.next();
		}
		sc.close();
		for (int i = 0; i < n; i++) {
			System.out.println(getResult(strs[i]));
		}
	}
	/**
	 *1. 如果出現連號,不管升序還是降序,都加5分。例如:5678,4321都滿足加分標準。
	 *2. 前三個數字相同,或後三個數字相同,都加3分。例如:4888,6665,7777都滿足加分的標準。
	 *		注意:7777因為滿足這條標準兩次,所以這條規則給它加了6分。
	 *3. 符合AABB或者ABAB模式的加1分。例如:2255,3939,7777都符合這個模式,所以都被加分。
	 *		注意:7777因為滿足這條標準兩次,所以這條標準給它加了2分。
	 *4. 含有:6,8,9中任何一個數字,每出現一次加1分。例如4326,6875,9918都符合加分標準。
	 *		其中,6875被加2分;9918被加3分。
	 * @param s
	 * @return
	 */
	public static int getResult(String s){
		char [] c = s.toCharArray();
		int [] arr = {Integer.parseInt("" + c[0]),Integer.parseInt("" + c[1]),
				Integer.parseInt("" + c[2]),Integer.parseInt("" + c[3])};
		int result = 0;
		//1
		if((arr[0]+1== arr[1]&& arr[1]+1==arr[2]&& arr[2]+1==arr[3])||
				(arr[0]-1== arr[1]&& arr[1]-1==arr[2]&& arr[2]-1==arr[3]))
			result += 5;
		//2
		if(arr[0] == arr[1]&&arr[1]==arr[2]) result+=3;
		if(arr[1] == arr[2]&&arr[2]==arr[3]) result+=3;
		//3
		if(arr[0]==arr[1] && arr[2]==arr[3]) result+=1;
		if(arr[0]==arr[2] && arr[1]==arr[3]) result+=1;
		//4
		if(arr[0]==6||arr[0]==8||arr[0]==9) result+=1;
		if(arr[1]==6||arr[1]==8||arr[1]==9) result+=1;
		if(arr[2]==6||arr[2]==8||arr[2]==9) result+=1;
		if(arr[3]==6||arr[3]==8||arr[3]==9) result+=1;
		return result;
	}

}


輸出結果:

0
0
5
6
8
12
3
3
5
1
1
3
8
5