第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了😭

posted @ 2020-04-18 22:25  海边星  阅读(1156)  评论(0编辑  收藏  举报