第11届蓝桥杯大赛个人赛(软件类)省级模拟赛 填空题
仅供参考(PS: 400+ 阅读 0 评论也太真实了
吧😂)
第1题:排列组合
问题描述
将LANQIAO中的字母重新排列,可以得到不同的单词,如LANQIAO、AAILNOQ等,注意这7个字母都要被用上,单词不一定有具体的英文意义。
请问,总共能排列如多少个不同的单词。
解题思路
计算策略:正难则反,结果 = 全排列 - 重复统计的单词数。
-
先求出7个单词的全排列
\(S=A_7^7=7×6×5×4×3×2×1=5040\) -
5个不重复单词全排列
\(A=A_5^5=5×4×3×2×1=120\) -
5个不重复单词有6个间隔
\(□ I □ L □N □ O □ Q □\) -
情况1:“AA”绑一起放在6个间隔中
\(B=C_6^1=6\) -
情况2:“AA”分开放在6个间隔中
\(C=C_6^2=\displaystyle\frac{6×5}{2×1}=15\) -
计算一下得到答案
\(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,200B\)
相关资料
电脑中存储常用的单位:
1B(Byte 字节) = 8Bit
1KB (Kilobyte 千字节) = 1024Byte,
1MB (Megabyte,兆字节,简称“兆”) = 1024KB,
1GB (Gigabyte,吉字节,又称“千兆”) = 1024MB,
1TB (Terabyte,太字节,或百万兆字节) = 1024GB,其中1024=2^10 (2的10次方)。
错误分析
可能把字节看成千字节,或者混淆了字节和千字节。
第3题:括号序列
问题描述
由1对括号,可以组成一种合法括号序列:()。
由2对括号,可以组成两种合法括号序列:()()、(())。
由4对括号组成的合法括号序列一共有多少种?
解题思路
- 暴力法:直接在纸张上写出😁
Case 1:(((())))
Case 2:((()()))
Case 3:((())())
Case 4:((()))()
Case 5:(()(()))
Case 6:(()()())
Case 7:(()())()
Case 8:(())(())
Case 9:(())()()
Case10:()((()))
Case11:()(()())
Case12:()(())()
Case13:()()(())
Case14:()()()()
- 算法求解,我不会😂
可参考:括号生成 - 力扣
参考代码
#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了😭
本文来自博客园,作者:海边星,转载请注明原文链接:https://www.cnblogs.com/StarsbySea/p/12728083.html