当前位置:   article > 正文

蓝桥杯(填空题)

蓝桥杯(填空题)

十四届

B组 日期统计(暴力枚举)

数据

  1. 5 6 8 6 9 1 6 1 2 4 9 1 9 8 2 3 6 4 7 7 5 9 5 0 3 8 7 5 8 1 5 8 6 1 8 3 0 3 7 9 2
  2. 7 0 5 8 8 5 7 0 9 9 1 9 4 4 6 8 6 3 3 8 5 1 6 3 4 6 7 0 7 8 2 7 6 8 9 5 6 5 6 1 4 0 1
  3. 0 0 9 4 8 0 9 1 2 8 5 0 2 5 3 3

审清题意:人家问的是这些数当中的子序列 有没有符合 2023mmdd 的 不是找能够多少个   

答案:235 

  1. #include<iostream>
  2. #include<cstring>
  3. #include<map>
  4. #include<set>
  5. using namespace std;
  6. int month[13]={0,1,2,3,4,5,6,7,8,9,10,11,12};
  7. int day[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
  8. int a[110];
  9. int main()
  10. {
  11. for(int i=1;i<=100;i++) cin>>a[i];
  12. int sum=0;
  13. for(int i=1;i<=12;i++)
  14. {
  15. for(int j=1;j<=day[i];j++)
  16. {
  17. int b[8]={2,0,2,3,i/10,i%10,j/10,j%10};
  18. int l=0;
  19. for(int i=1;i<=100;i++)
  20. {
  21. if(b[l]==a[i])
  22. {
  23. l++;
  24. }
  25. if(l==8) break;
  26. }
  27. if(l==8) sum++;
  28. }
  29. }
  30. cout<<sum<<endl;
  31. return 0;
  32. }

第十三届

A组 灭鼠先锋(博弈)

答案:LLLV 

  1. #include<iostream>
  2. #include<cstring>
  3. #include<queue>
  4. #include<map>
  5. using namespace std;
  6. map<string,bool>sg;
  7. // 判断是否仅存在一个空格(O)
  8. // 扫描字符串并对O的数量计数
  9. bool check(string str)
  10. {
  11. int cnt=0;
  12. for(int i=0;i<str.size();i++)
  13. {
  14. if(str[i]=='O') cnt++;
  15. }
  16. if(cnt==1) return true;
  17. return false;
  18. }
  19. /*
  20. * 后手必胜/必败
  21. */
  22. bool dfs(string str)
  23. {
  24. if(sg.count(str)) return sg[str];// 记忆化
  25. // 如果只有一个空位,也就是说后手必败
  26. if(check(str)) return sg[str]=false;
  27. /*
  28. * 模拟放一个的情况
  29. */
  30. for(int i=0;i<str.size();i++)
  31. {
  32. if(str[i]=='O')
  33. {
  34. string s=str;
  35. s[i]='X';
  36. // 可达必败均为必胜
  37. // 意思是存在当前选手下了某一步棋之后,后面的选手不管怎么下都必败
  38. if(!dfs(s)) return sg[str]=true;
  39. }
  40. }/*
  41. * 模拟放两个的情况
  42. */
  43. for(int i=0;i<str.size()-1;i++)
  44. { // i!=3是什么意思?因为这里是把两行排成一行了,不能第一行最后一个+第二行第一个算作连续两个
  45. if(str[i]=='O'&&str[i+1]=='O'&&i!=3)
  46. {
  47. string s=str;
  48. s[i]='X';
  49. s[i+1]='X';
  50. // 可达必败均为必胜
  51. if(!dfs(s)) return sg[str]=true;
  52. }
  53. }
  54. // 只达必胜均为必败
  55. // 排除了所有可能到达必败态的情况,接下来不管自己或者下一步对方怎么下对方都必胜,自己必败
  56. return sg[str]=false;
  57. }
  58. int main()
  59. {
  60. // 表示棋盘的四种状态
  61. string str[4]={"XOOOOOOO","XXOOOOOO","OXOOOOOO","OXXOOOOO"};
  62. for(int i=0;i<4;i++)
  63. {
  64. sg.clear();
  65. if(dfs(str[i])) cout<<"L";// 后手必胜
  66. else cout<<"V";
  67. }
  68. return 0;
  69. }

 

研究生组 小蓝与药匙(错排)

思路:从28把钥匙中选14(14钥匙一 一对应对应对的门) 然后让剩下的14把钥匙错排 

错排公式

An=(n-1)*(An-1+An-2) 

  1. #include<iostream>
  2. #include<algorithm>
  3. #define int long long
  4. using namespace std;
  5. const int N=30;
  6. int f[N];
  7. signed main()
  8. {
  9. int num=1,num1=1;
  10. for(int i=15;i<=28;i++) num*=i;
  11. for(int i=1;i<=14;i++) num1*=i;
  12. num/=num1;
  13. f[1]=0;
  14. f[2]=1;
  15. for(int i=3;i<=14;i++)
  16. {
  17. f[i]=(i-1)*(f[i-1]+f[i-2]);
  18. }
  19. cout<<f[14]*num<<endl;
  20. return 0;
  21. }

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小小林熬夜学编程/article/detail/422252
推荐阅读
相关标签
  

闽ICP备14008679号