蓝桥杯

蓝桥杯 ALGO-91 算法训练 Anagrams问题

谁说我不能喝 提交于 2020-01-12 19:37:45
算法训练 Anagrams问题 时间限制:1.0s 内存限制:512.0MB 问题描述   Anagrams指的是具有如下特性的两个单词:在这两个单词当中,每一个英文字母(不区分大小写)所出现的次数都是相同的。例如,“Unclear”和“Nuclear”、“Rimon”和“MinOR”都是Anagrams。编写一个程序,输入两个单词,然后判断一下,这两个单词是否是Anagrams。每一个单词的长度不会超过80个字符,而且是大小写无关的。   输入格式:输入有两行,分别为两个单词。   输出格式:输出只有一个字母Y或N,分别表示Yes和No。   输入输出样例 样例输入 Unclear Nuclear 样例输出 Y #include <stdio.h> #include <string.h> int main() { char word1[82] = { 0 }, word2[82] = { 0 }; scanf("%s", word1); scanf("%s", word2); int len1 = (int)strlen(word1); int len2 = (int)strlen(word2); if (len1 != len2) printf("N"); else { int statistic1[26] = { 0 }, statistic2[26] = { 0 };

杨辉三角_蓝桥杯

此生再无相见时 提交于 2020-01-12 19:00:24
循环 数组 /** 问题描述 杨辉三角形又称Pascal三角形,它的第i+1行是(a+b)i的展开式的系数。    它的一个重要性质是:三角形中的每个数字等于它两肩上的数字相加。    下面给出了杨辉三角形的前4行:    1    1 1    1 2 1    1 3 3 1    给出n,输出它的前n行。 输入格式 输入包含一个数n。 输出格式 输出杨辉三角形的前n行。每一行从这一行的第一个数开始依次输出,中间使用一个空格分隔。请不要在前面输出多余的空格。 样例输入 4 样例输出 1 1 1 1 2 1 1 3 3 1 数据规模与约定 1 <= n <= 34。 */ package jiChuLianXi; import java.util.Scanner; public class PascalTriAngle { public static void PasTAngle(int n){ int arr[][] = new int[(1+n)*n/2+1][(1+n)*n/2+1]; arr[1][1] = 1; if(n>1){ for(int i=2; i<=n; i++){ arr[i][1] = 1; for(int j=2; j<i; j++){ arr[i][j] = arr[i-1][j-1] + arr[i-1][j]; } arr[i][i] = 1;

【蓝桥杯】2013-A组03 振兴中华

霸气de小男生 提交于 2020-01-11 18:46:47
题目描述: 小明参加了学校的趣味运动会,其中的一个项目是:跳格子。地上画着一些格子,每个格子里写一个字,如下所示: 比赛时,先站在左上角的写着“从”字的格子里,可以横向或纵向跳到相邻的格子里,但不能跳到对角的格子或其它位置,一直要跳到“华”字结束。要求跳过的路线刚好构成“从我做起振兴中华”这句话。请你帮助小明算一算他一共有多少种可能的跳跃路线呢? 解题思路: 没有坑,直接递归求解,要么往下要么往右,当下到第4行时就只能往右了return 1,或者右到第5行只能往下了return 1。递归求解的入口是“从”字所在的下标,即(1,1)。 AC代码: #include <bits/stdc++.h> using namespace std; int fun(int x,int y) { if(x==4 || y==5) return 1; return fun(x+1,y)+fun(x,y+1); } int main() { ios::sync_with_stdio(false); cin.tie(0),cout.tie(0); cout << fun(1,1) << endl; return 0; } 来源: CSDN 作者: 喜欢ctrl的cxk 链接: https://blog.csdn.net/weixin_42449444/article/details/103936194

蓝桥杯-寒假作业

╄→尐↘猪︶ㄣ 提交于 2020-01-11 03:03:46
现在小学的数学题目也不是那么好玩的。 看看这个寒假作业: 每个方块代表1~13中的某一个数字,但不能重复。 比如: 6 + 7 = 13 9 - 8 = 1 3 * 4 = 12 10 / 2 = 5 以及: 7 + 6 = 13 9 - 8 = 1 3 * 4 = 12 10 / 2 = 5 就算两种解法。(加法,乘法交换律后算不同的方案) 你一共找到了多少种方案? 请填写表示方案数目的整数。 注意:你提交的应该是一个整数,不要填写任何多余的内容或说明性文字。 首先想到深度优先搜索进行排列组合,便有了如下的代码: #include <bits/stdc++.h> using namespace std; int a[13]={0};//记录当前序列 int book[14]={0};// 记录下标数字是否被使用 int num=0;//计数器 void dfs(int step) { if(step==13) { if(a[12]*a[11]==a[10]&&a[7]*a[8]==a[9]&&a[4]-a[5]==a[6]&&a[1]+a[2]==a[3]) { num++ ; //for(int i=1;i<=12;i++) //cout<<a[i]<<" "; //cout<<endl; } return; } for(int i=1;i<=13;i++) { if(book

蓝桥杯2015 B组C省赛真题 2015-1 奖券数目

耗尽温柔 提交于 2020-01-09 12:33:14
奖卷数目 有些人很迷信数字,比如带“4”的数字,认为和“死”谐音,就觉得不吉利。 虽然这些说法纯属无稽之谈,但有时还要迎合大众的需求。某抽奖活动的奖券号码是5位数(10000-99999),要求其中不要出现带“4”的号码,主办单位请你计算一下,如果任何两张奖券不重号,最多可发出奖券多少张。 请提交该数字(一个整数),不要写任何多余的内容或说明性文字。 解法1 :排列组合 A n m = n ( n − 1 ) ⋯ ( n − m + 1 ) = n ! ( n − m ) ! C n m = A n m m ! = n ! m ! ( n − m ) ! = C n n − m \begin{aligned} &A_{n}^{m}=n(n-1) \cdots(n-m+1)=\frac{n !}{(n-m) !}\\ &C_{n}^{m}=\frac{A_{n}^{m}}{m !}=\frac{n !}{m !(n-m) !}=C_{n}^{n-m} \end{aligned} ​ A n m ​ = n ( n − 1 ) ⋯ ( n − m + 1 ) = ( n − m ) ! n ! ​ C n m ​ = m ! A n m ​ ​ = m ! ( n − m ) ! n ! ​ = C n n − m ​ ​ 第一个数字不选4的情况有8种,第二位9种,第三位9种

蓝桥杯---纪念品分组

大城市里の小女人 提交于 2020-01-07 16:36:30
蓝桥杯练习—纪念品分组 问题描述   元旦快到了,校学生会让乐乐负责新年晚会的纪念品发放工作。为使得参加晚会的同学所获得的纪念品价值 相对均衡,他要把购来的纪念品根据价格进行分组,但每组最多只能包括两件纪念品,并且每组纪念品的价格之和不能超过一个给定的整数。为了保证在尽量短的时 间内发完所有纪念品,乐乐希望分组的数目最少。   你的任务是写一个程序,找出所有分组方案中分组数最少的一种,输出最少的分组数目。 输入格式   输入包含n+2行:   第1行包括一个整数w,为每组纪念品价格之和的上限。   第2行为一个整数n,表示购来的纪念品的总件数。   第3~n+2行每行包含一个正整数pi (5 <= pi <= w),表示所对应纪念品的价格。 输出格式   输出仅一行,包含一个整数,即最少的分组数目。 样例输入 9 20 30 60 80 样例输出 数据规模和约定   50%的数据满足:1 <= n <= 15   100%的数据满足:1 <= n <= 30000, 80 <= w <= 200## 新的改变    思路:这个问题在于选择,我想最多的情况是每一个都要一个袋子, 就是把从大到小排序,最大的最校的结合就可以了 # include <iostream> # include <algorithm> using namespace std ; int a [ 30002 ]

蓝桥杯--枚举--最长单词

大城市里の小女人 提交于 2020-01-07 14:51:09
编写一个函数,输入一行字符,将此字符串中最长的单词输出。   输入仅一行,多个单词,每个单词间用一个空格隔开。单词仅由小写字母组成。所有单词的长度和不超过100000。如有多个最长单词,输出最先出现的。 样例输入 I am a student 样例输出 student  这道题的参考价值是输入一串字符串怎么处理 # include <iostream> # include <string.h> using namespace std ; int main ( ) { char a [ 100000 ] ; int j ; int t ; int c ; int max = 0 ; int i = 0 ; int k = 0 ; j = 0 ; gets ( a ) ; //printf("%s",a); k = strlen ( a ) ; //cout<<k; for ( i = 0 ; i < k ; i ++ ) { if ( a [ i ] == ' ' || i == k - 1 ) { c = i - j ; j = i + 1 ; if ( c > max ) { max = c ; t = i ; } } } for ( int x = t - max ; x <= t ; x ++ ) { cout << a [ x ] ; } cout << endl ;

蓝桥杯入门训练

点点圈 提交于 2020-01-06 03:08:27
一、 Fibonacci数列 【 注意:此题的做法就是禁止直接算出和再进行取余,这样会造成运行超时 】 问题描述   Fibonacci数列的递推公式为:Fn=Fn-1+Fn-2,其中F1=F2=1。   当n比较大时,Fn也非常大,现在我们想知道,Fn除以10007的余数是多少。 输入格式   输入包含一个整数n。 输出格式   输出一行,包含一个整数,表示Fn除以10007的余数。   说明:在本题中,答案是要求Fn除以10007的余数,因此我们只要能算出这个余数即可,而不需要先计算出Fn的准确值,再将计算的结果除以10007取余数,直接计算余数往往比先算出原数再取余简单。 样例输入   10 样例输出   55 样例输入   22 样例输出   7704 数据规模与约定   1 <= n <= 1,000,000。 1 import java.util.Scanner; 2 3 public class Main { 4 public static void main(String[] args) { 5 // TODO Auto-generated method stub 6 Scanner mm = new Scanner(System.in); 7 int n = mm.nextInt(); 8 int[] aa = new int[1000000]; 9 aa[1]

蓝桥杯入门训练

余生颓废 提交于 2020-01-06 03:07:55
题目:http://lx.lanqiao.cn/problemset.page?code=BEGIN-&userid=188230 一、Fibonacci数列 优化方法 :不能直接每次求取Fibonacci递归,要用数组将原来算过的数据存储下来,因为相同的情况递归算法会重复算很多次。 time:15ms #include<iostream> using namespace std; const int mod = 10007; int arr[1000005]; int main() { arr[0] = 0; arr[1] = arr[2] = 1; for (int i = 3; i <= 1000000; ++i) arr[i] = (arr[i - 1] + arr[i - 2]) % mod; int num; cin >> num; cout << arr[num] << endl; return 0; } 二、圆的面积 time:15ms #include<iostream> #include<iomanip> using namespace std; const double PI = 3.14159265358979323; int main() { int num; cin >> num; cout << setiosflags(ios::fixed);

蓝桥杯 入门训练

喜夏-厌秋 提交于 2020-01-06 03:07:38
http://lx.lanqiao.cn/problemset.page?code=BEGIN-&userid=246004 BEGIN-1 A+B问题 代码: #include <bits/stdc++.h> using namespace std; int A, B; int main() { scanf("%d%d", &A, &B); printf("%d\n", A + B); return 0; } View Code BEGIN-2 序列求和 代码: #include <bits/stdc++.h> using namespace std; long long n; long long ans = 0; int main() { scanf("%lld", &n); ans = (1 + n) * n / 2; printf("%I64d\n", ans); return 0; } View Code BEGIN-3 圆的面积 代码: #include <bits/stdc++.h> using namespace std; #define PI 3.14159265358979323 int r; double s; int main() { scanf("%d", &r); s = 1.0 * r * r * PI; printf("%.7f\n", s);