1. 程式人生 > 其它 >藍橋杯JAVA練習0214-BASIC21-23筆記

藍橋杯JAVA練習0214-BASIC21-23筆記

技術標籤:藍橋杯

BASIC-21 Sine之舞

Sine之舞

神奇的奶牛
這道題主要是注意分辨公式的每個部分是什麼意思
呼叫兩個函式an、sn進行每一部分的輸出
sn函式為整體的把控,這裡需要呼叫an,所以可以把sn用含有an的公式表示出來,需要輸出an的時候呼叫an函式
主要難點在於an的寫法
我想到了遞迴,但是由於掌握不熟練最後還是用for迴圈寫出來了

容易出問題的地方:
  • 對於迴圈中的起始點為0還是1,用1的話能更好聯絡公式找到規律
  • 像開頭結尾的括號可以單獨使用for迴圈一次性輸出
code
import java.util.Scanner;

public class Main {
public static void main(String[] args) { // TODO Auto-generated method stub Scanner scanner = new Scanner(System.in); int n = scanner.nextInt(); sn(n); } public static void an(int n) { int i; for (i = 1; i <= n; i++) { System.out.print("sin(" + i); if (i != n) { if
(i % 2 == 1) { System.out.print("-"); } else { System.out.print("+"); } } } for (i = 0; i < n; i++) { System.out.print(")"); } } public static void sn(int n) { int i; for (i = 1; i < n; i++) { System.out.print("("
); } for (i = 1; i <= n; i++) { an(i); int t = n - i + 1; System.out.print("+" + t); if (i != n) { System.out.print(")"); } } } }

BASIC-22 FJ的字串

FJ的字串

在這裡插入圖片描述
講道理我剛開始並沒有發現什麼規律
然後發現原來是和上一項有關係
那就簡單了
遞迴
首先明白兩個重點就可以

  • 每一項和上一項的聯絡(即中間新增新的字母)
  • 遞迴結束條件(A1)

還有之前就容易錯的一點是強制轉換
(int)‘A’ √
int(‘A’) ×

code
import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner scanner = new Scanner(System.in);
		int n = scanner.nextInt();
		an(n);
		System.out.println();
	}

	public static void an(int n) {
		int i, j;
		if (n == 1) {
			System.out.print("A");
		} else {
			an(n - 1);
			char c = (char) ((int) 'A' + (n - 1));
			System.out.print(c);
			an(n - 1);
		}
	}
}

BASIC-23 晶片測試

晶片測試

看似複雜其實很簡單
只需要統計針對同一個晶片,所有晶片測得它是1的次數
如果次數超過晶片數的二分之一
就可以判定它是好的
因為“已知好晶片比壞晶片多”

code
import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner scanner = new Scanner(System.in);
		int n = scanner.nextInt();
		int a[][] = new int[n][n];
		int i, j;
		for (i = 0; i < n; i++) {
			for (j = 0; j < n; j++) {
				a[i][j] = scanner.nextInt();
			}
		}
		/*
		 * for (i = 0; i < n; i++) { for (j = 0; j < n; j++) {
		 * System.out.print(a[i][j]); } }
		 */
		int num[] = new int[n];
		for (i = 0; i < n; i++) {
			num[i] = 0;
		}
		for (i = 0; i < n; i++) {
			for (j = 0; j < n; j++) {
				if (a[i][j] == 1) {
					num[j]++;
				}
			}
		}
		for (i = 0; i < n; i++) {
			if (num[i] > n / 2) {
				int t = i + 1;
				System.out.print(t + " ");
			}
		}
	}

}