第11屆藍橋杯大賽個人賽(軟件類)省級模擬賽 填空題


僅供參考(PS: 400+ 閱讀 0 評論也太真實了😂)

第1題:排列組合

問題描述

  將LANQIAO中的字母重新排列,可以得到不同的單詞,如LANQIAO、AAILNOQ等,注意這7個字母都要被用上,單詞不一定有具體的英文意義。
  請問,總共能排列如多少個不同的單詞。

解題思路

  計算策略:正難則反,結果 = 全排列 - 重復統計的單詞數。

  1. 先求出7個單詞的全排列
    \(S=A_7^7=7×6×5×4×3×2×1=5040\)

  2. 5個不重復單詞全排列
    \(A=A_5^5=5×4×3×2×1=120\)

  3. 5個不重復單詞有6個間隔
    \(□ I □ L □N □ O □ Q □\)

  4. 情況1:“AA”綁一起放在6個間隔中
    \(B=C_6^1=6\)

  5. 情況2:“AA”分開放在6個間隔中
    \(C=C_6^2=\displaystyle\frac{6×5}{2×1}=15\)

  6. 計算一下得到答案
    \(R=S-A×(B+C)=5040-2520=2520\)

錯誤分析

  一開始想7個單詞全排列,\(A_7^7=5040\),填上就萬事大吉了吧。
  定睛一看🤔它有兩個AA,那么例如“AAILNOQ”的情況在全排列的情況下會統計兩次,不符題意

第2題:小學計算

問題描述

  在計算機存儲中,12.5MB是多少字節?

解題思路

  \(12.5MB=12.5×1024×1024B=‭13,107,200‬‬B\)

相關資料

電腦中存儲常用的單位
  1B(Byte 字節) = 8Bit
  1KB (Kilobyte 千字節) = 1024Byte,
  1MB (Megabyte,兆字節,簡稱“兆”) = 1024KB,
  1GB (Gigabyte,吉字節,又稱“千兆”) = 1024MB,
  1TB (Terabyte,太字節,或百萬兆字節) = 1024GB,其中1024=2^10 (2的10次方)。

錯誤分析

  可能把字節看成千字節,或者混淆了字節和千字節。

第3題:括號序列

問題描述

  由1對括號,可以組成一種合法括號序列:()。
  由2對括號,可以組成兩種合法括號序列:()()、(())。
  由4對括號組成的合法括號序列一共有多少種?

解題思路

  1. 暴力法:直接在紙張上寫出😁
Case 1:(((())))
Case 2:((()()))
Case 3:((())())
Case 4:((()))()
Case 5:(()(()))
Case 6:(()()())
Case 7:(()())()
Case 8:(())(())
Case 9:(())()()
Case10:()((()))
Case11:()(()())
Case12:()(())()
Case13:()()(())
Case14:()()()()
  1. 算法求解,我不會😂
    可參考:括號生成 - 力扣

參考代碼

#include <stdio.h>
#include <string.h>
#include <malloc.h>
#define MAX_SIZE 1430

void generate(int left, int right, int n, char *str, int index, char **result, int *returnSize) {
  if (left == n && right == n) {  //左右括號都用完
    result[(*returnSize)] =  (char*)calloc((2 * n + 1), sizeof(char));
    strcpy(result[(*returnSize)++], str);
    return;
  }
  
  if (left < n) {  //當左括號沒用完時
    str[index] = '(';
    generate(left + 1, right, n, str, index + 1, result, returnSize);
  }

  if (left > right && right < n) {  //右括號數量必須小於左括號,否則一定不合法,且右括號沒有用完
    str[index] = ')';
    generate(left, right + 1, n, str, index + 1, result, returnSize);
  }
}

char **generateParenthesis(int n, int *returnSize) {
  char *str = (char*)calloc((2 * n + 1), sizeof(char));
  char **result = (char **)malloc(sizeof(char *) * MAX_SIZE);
  *returnSize = 0;
  generate(0, 0, n, str, 0, result, returnSize);
  return result;
}

int main() {
	int i,count,//統計不同組合的個數 
		num=4;//括號的數量 
	char** result=generateParenthesis(num,&count);//獲取不同組合的字符串數組 
	for(i=0;i<count;i++) printf("Case%2d:%s\n",i+1,result[i]);
	printf("Total:%d\n",count);
	return 0;
}
///作者:dingjinyang
///鏈接:https://leetcode-cn.com/problems/generate-parentheses/solution/cyu-yan-hui-su-suan-fa-dai-ma-jian-ji-by-dingjinya/
///來源:力扣(LeetCode)
///著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。

錯題分析

我只寫出這7鍾
\(()()()(),(())()(),()(())(),()()(()),((()))(),()((())),()((())),(((()))),\)

第4題:節點求邊

問題描述

  一個包含有2019個結點的無向連通圖,最少包含多少條邊?

解題思路

  一個有n個頂點的無向連通圖最多有n(n-1)/2條邊,最少有n-1條邊(參考)
  答案即2018。

錯題分析

  圖論還沒學,做錯寫成2019了😭


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM