精华内容
下载资源
问答
  • 蓝桥杯真题

    2018-04-20 15:29:42
    蓝桥杯c历年真题及答案整理蓝桥杯c历年真题及答案整理蓝桥杯c历年真题及答案整理
  • 蓝桥杯历年真题
  • 蓝桥杯真题蓝桥杯真题之旋转

    千次阅读 2020-02-29 00:00:00
    本文首发于微信公众号... 试题F: 旋转 7 第十届蓝桥杯大赛软件类省赛 Java 大学 C 组。 【样例输入】3 4 1 3 5 7 9 8 7 6 3 5 9 7 【样例输出】3 9 1 5 8 3 9 7 5 7 6 7 解决方案 首先想到的是利用二维数组来解决此问

    欢迎点击「算法与编程之美」↑关注我们!

     

    本文首发于微信公众号:"算法与编程之美",欢迎关注,及时了解更多此系列文章。

    问题描述

    图片旋转是对图片最简单的处理方式之一,在本题中,需要对图片顺时针旋转 90 度。用一个 n×m 的二维数组来表示一个图片,例如给出一个 3×4 的图片的例子:

    1  3  5  7

    9  8  7  6

    3  5  9  7

    这个图片顺时针旋转 90 度后的图片如下:

    3  9  1

    5  8  3

    9  7  5

    7  6  7

    给定初始图片,请计算旋转后的图片。

    【输入格式】

    输入的第一行包含两个整数 n 和 m,分别表示行数和列数。接下来 n 行,每行 m 个整数,表示给定的图片。图片中的每个元素(像 素)为一个值为 0 至 255 之间的整数(包含 0 和 255)。

    【输出格式】

    输出 m 行 n 列,表示旋转后的图片。

    试题F: 旋转 7

    第十届蓝桥杯大赛软件类省赛 Java 大学 C 组。

    【样例输入】3  4

    1  3  5  7

    9  8  7  6

    3  5  9  7

    【样例输出】3  9  1

    5  8  3

    9  7  5

    7  6  7

    解决方案

    首先想到的是利用二维数组来解决此问

    展开全文
  • 本文首发于微信公众号:"算法与编程之美",欢迎关注,及时了解更多此系列文章。问题描述小蓝有一个数字矩阵,里面只包含数字 0 和 2。小蓝很喜欢 2020,他想找到这个数字矩...

    本文首发于微信公众号:"算法与编程之美",欢迎关注,及时了解更多此系列文章。

    问题描述

    小蓝有一个数字矩阵,里面只包含数字 0 和 2。小蓝很喜欢 2020,他想找

    到这个数字矩阵中有多少个 2020 。小蓝只关注三种构成 2020 的方式:

    • 同一行里面连续四个字符从左到右构成 2020。

    • 同一列里面连续四个字符从上到下构成 2020。

    • 在一条从左上到右下的斜线上连续四个字符,从左上到右下构成 2020。

    例如,对于下面的矩阵:

    220000

    000000

    002202

    000000

    000022

    002020

    一共有 5 个 2020。其中 1 个是在同一行里的,1 个是在同一列里的,3 个是斜线上的。小蓝的矩阵比上面的矩阵要大,由于太大了,他只好将这个矩阵放在了一个文件里面,在试题目录下有一个文件 2020.txt,里面给出了小蓝的矩阵。请帮助小蓝确定在他的矩阵中有多少个 2020。

    算法描述

    这里以题中给出的数据为例,用六串数字组成一个列表。我们要找到全部的2020,应该去挨个寻找,首先,遍历每一行,找到每一行中所有能组成的2020,再遍历每一列,找到从列的方向中所有的2020,最后遍历从左上到右下的情况,找到剩余的2020,因为题目中只给定了这三种方法组成2020,我们寻找时也按照这个方法。以下是完整代码的展示。

    展开全文
  • 本文首发于微信公众号:"算法与编程之美",欢迎关注,及时了解更多此系列文章。问题描述小蓝每天都锻炼身体。正常情况下,小蓝每天跑 1 千米。如果某天是周一或者月初(1 日),...

    本文首发于微信公众号:"算法与编程之美",欢迎关注,及时了解更多此系列文章。

    问题描述

    小蓝每天都锻炼身体。正常情况下,小蓝每天跑 1 千米。如果某天是周一或者月初(1 日),为了激励自己,小蓝要跑 2 千米。如果同时是周一或月初,小蓝也是跑 2 千米。小蓝跑步已经坚持了很长时间,从 2000 年 1 月 1 日周六(含)到 2020 年10 月 1 日周四(含)。请问这段时间小蓝总共跑步多少千米?

    解决方案

    了解题意,对问题进行划分,特殊条件(周一和月初跑2千米),其他日子均跑1千米;日期范围是2000年1月1日到2020年10月1日。

    细化条件,条件中带有周一和月初,那我们就要引用datetime。from datetime import这句代码是,添加引用datetime模块的意思 引用了模块就可以使用这个模块中的函数、数据类型、类等。

    然后就是循环程序,通过日期,可以筛选出跑1千米和2千米的日子,然后将全部值进行求和。

    接下来展示完整的代码。

    from datetime import *

    length = 0

    day = timedelta(days = 1)

    x1 = date(2000,1,1)

    x2 = date(2020,10,1)

    while x1 <= x2:

         if x1.day

    展开全文
  • 蓝桥杯真题解析

    2014-02-17 20:08:01
    蓝桥杯真题解析,是你能够更好的运用各类算法解决问题。
  • 2018省赛第九届蓝桥杯真题C语言B组;2018省赛第九届蓝桥杯真题C语言B组;2018省赛第九届蓝桥杯真题C语言B组;2018省赛第九届蓝桥杯真题C语言B组;2018省赛第九届蓝桥杯真题C语言B组;2018省赛第九届蓝桥杯真题C语言B...
  • 第三届国信蓝点、蓝桥杯真题。包括所有预赛真题和决赛真题。
  • 2015--蓝桥杯真题

    2020-10-13 21:26:15
    奖券数目 有些人很迷信数字,比如带“4”的数字,认为和“死”谐音,就觉得不吉利。 虽然这些说法纯属无稽之谈,但有时还要迎合大众的需求。某抽奖活动的奖券号码是5位数(10000-99999), ...

     

    奖券数目

     

    有些人很迷信数字,比如带“4”的数字,认为和“死”谐音,就觉得不吉利。

    虽然这些说法纯属无稽之谈,但有时还要迎合大众的需求。某抽奖活动的奖券号码是5位数(10000-99999),

    要求其中不要出现带“4”的号码,主办单位请你计算一下,如果任何两张奖券不重号,最多可发出奖券多少张

     

    请提交该数字(一个整数),不要写任何多余的内容或说明性文字。

     52488

    #include<stdio.h>
    #include<algorithm>
    #include<string.h>
    using namespace std;
    #define inf 0x3f3f3f3f
    typedef long long ll;
    const int N=1e5+10;
    #include<vector>
    #include<math.h>
    
    ///奖券数目
    int main()
    {
       ll ans=0;
       for(int i=10000; i<=99999; i++)
          {
             int j=i;
             int flag=0;
             while(j)
                {
                   int x=j%10;
                   if(x==4)
                      {
                         flag=1;
                         break;
                      }
                   j/=10;
                }
             if(flag==0)
                ans++;
          }
       ///ans=ans*(ans-1);///不重号
       printf("%lld\n",ans);
       return 0;
    }
    

    星系炸弹

     

    在X星系的广袤空间中漂浮着许多X星人造“炸弹”,用来作为宇宙中的路标。

    每个炸弹都可以设定多少天之后爆炸。

    比如:阿尔法炸弹2015年1月1日放置,定时为15天,则它在2015年1月16日爆炸。

    有一个贝塔炸弹,2014年11月9日放置,定时为1000天,请你计算它爆炸的准确日期。

    请填写该日期,格式为 yyyy-mm-dd  即4位年份2位月份2位日期。比如:2015-02-19

    请严格按照格式书写。不能出现其它文字或符号。

    2017-08-05

    #include<stdio.h>
    #include<algorithm>
    #include<string.h>
    using namespace std;
    #define inf 0x3f3f3f3f
    typedef long long ll;
    const int N=1e5+10;
    #include<vector>
    #include<math.h>
    
    ///星系炸弹
    int f[15]= {0,31,0,31,30,31,30,31,31,30,31,30,31};
    int isleap(int x)
    {
       if((x%4==0&&x%100!=0)||x%400==0)
          return true;
       return false;
    }
    int main()
    {
       int ans=1000;
       int yy=0,mm=0,dd=0;///year month day
       int book=0;
       for(int i=2014; i<=2020; i++)
          {
             if(isleap(i))
                f[2]=29;
             else f[2]=28;
             for(int j=1; j<=12; j++)
                {
                   if(i==2014)
                      {
                         if(book==0)
                            {
                               book=1;
                               j=11;
                               ans-=f[j]-9;
                            }
                      }
                   else
                      {
                         if(ans>=f[j])
                            ans-=f[j];
                         else
                            {
                               yy=i;
                               mm=j;
                               dd=ans;
                               printf("%04d-%02d-%02d\n",yy,mm-1,dd);
                               return 0;
                            }
                      }
                }
          }
       return 0;
    }
    

    三羊献瑞

     

    观察下面的加法算式:

     

          abcd

      +   efgb

    -------------------

      efcbh

     

    (如果有对齐问题,可以参看【图1.jpg】)

     

    其中,相同的汉字代表相同的数字,不同的汉字代表不同的数字。

     

    请你填写“三羊献瑞”所代表的4位数字(答案唯一),不要填写任何多余内容。

      1085

    #include<stdio.h>
    #include<algorithm>
    #include<string.h>
    using namespace std;
    #define inf 0x3f3f3f3f
    typedef long long ll;
    const int N=1e5+10;
    #include<vector>
    #include<math.h>
    
    ///三羊献瑞
    int num[10]= {0,1,2,3,4,5,6,7,8,9};
    int main()
    {
       do
          {
             int a=num[0]*1000+num[1]*100+num[2]*10+num[3];
             int b=num[4]*1000+num[5]*100+num[6]*10+num[1];
             int c=num[4]*10000+num[5]*1000+num[2]*100+num[1]*10+num[7];
             if(a+b==c)
                {
                   if(num[4]==1)
                      printf("%d %d %d %d\n",num[4],num[5],num[6],num[1]);
                   //break;
                }
          }
       while(next_permutation(num,num+10));
       return 0;
    }
    

    格子中输出

     

    StringInGrid函数会在一个指定大小的格子中打印指定的字符串。

    要求字符串在水平、垂直两个方向上都居中。

    如果字符串太长,就截断。

    如果不能恰好居中,可以稍稍偏左或者偏上一点。

     

    下面的程序实现这个逻辑,请填写划线部分缺少的代码。

     

    对于题目中数据,应该输出:

    +------------------+

    |                          |

    |     abcd1234     |

    |                          |

    |                          |

    +------------------+

    (如果出现对齐问题,参看【图1.jpg】)

    注意:只填写缺少的内容,不要书写任何题面已有代码或说明性文字。

    #include <stdio.h>
    #include <string.h>
    
    void StringInGrid(int width, int height, const char* s)
    {
       int i,k;
       char buf[1000];
       strcpy(buf, s);
       if(strlen(s)>width-2) buf[width-2]=0;
    
       printf("+");
       for(i=0; i<width-2; i++) printf("-");
       printf("+\n");
    
       for(k=1; k<(height-1)/2; k++)
          {
             printf("|");
             for(i=0; i<width-2; i++) printf(" ");
             printf("|\n");
          }
    
       printf("|");
    //   printf("%*s%s%*s",_____________________________________________);  //填空
    ///传2个参数,第一个参数是%s的个数(注意不是长度),第二个参数就是%s
    //   (width - strlen(s) - 2) / 2, " ", s, (width - strlen(s) - 1) / 2, " "
       printf("%*s%s%*s", (width-2-strlen(buf))/2," ",buf,(width-1-strlen(buf))/2," ");
       printf("|\n");
    ///from 2 to width-1
    //   int ans=0;
    //   for(int i=0; i<=1000; i++)
    //      {
    //         if(buf[i]!=0)
    //            {
    //               ans++;
    //            }
    //         else break;
    //      }
    //   int xx=(width-ans-2)/2;
    //   for(int i=1; i<=(width-ans-2)/2; i++)
    //      printf(" ");
    //   for(int i=0; i<ans; i++)
    //      printf("%c",buf[i]);
    //   for(int i=xx+ans+1; i<=width-2; i++)
    //      printf(" ");
    
       for(k=(height-1)/2+1; k<height-1; k++)
          {
             printf("|");
             for(i=0; i<width-2; i++) printf(" ");
             printf("|\n");
          }
    
       printf("+");
       for(i=0; i<width-2; i++) printf("-");
       printf("+\n");
    }
    
    int main()
    {
       StringInGrid(20,6,"abcd1234");
       return 0;
    }
    

    九数组分数

     

    1,2,3...9 这九个数字组成一个分数,其值恰好为1/3,如何组法?

    下面的程序实现了该功能,请填写划线部分缺失的代码。

    注意:只填写缺少的内容,不要书写任何题面已有代码或说明性文字。

    #include <stdio.h>
    
    void test(int x[])
    {
       int a = x[0]*1000 + x[1]*100 + x[2]*10 + x[3];
       int b = x[4]*10000 + x[5]*1000 + x[6]*100 + x[7]*10 + x[8];
    
       if(a*3==b) printf("%d / %d\n", a, b);
    }
    
    void f(int x[], int k)
    {
       int i,t;
       if(k>=9)
          {
             test(x);
             return;
          }
    
       for(i=k; i<9; i++)
          {
             {
                t=x[k];
                x[k]=x[i];
                x[i]=t;
             }
             f(x,k+1);
    ///————————————————————————————————————————————填空处
             {
                t = x[k];
                x[k] = x[i];
                x[i] = t;
             }
    //____________________________________________ // 填空处
          }
    }
    
    int main()
    {
       int x[] = {1,2,3,4,5,6,7,8,9};
       f(x,0);
       return 0;
    }
    

    加法变乘法

     

    我们都知道:1+2+3+ ... + 49 = 1225

    现在要求你把其中两个不相邻的加号变成乘号,使得结果为2015

     

    比如:

    1+2+3+...+10*11+12+...+27*28+29+...+49 = 2015

    就是符合要求的答案。

     

    请你寻找另外一个可能的答案,并把位置靠前的那个乘号左边的数字提交

    (对于示例,就是提交10)。

     

    注意:需要你提交的是一个整数,不要填写任何多余的内容。

    10  27

    16  24

    #include<stdio.h>
    #include<algorithm>
    #include<string.h>
    using namespace std;
    #define inf 0x3f3f3f3f
    typedef long long ll;
    const int N=1e5+10;
    #include<vector>
    #include<math.h>
    
    int a[110];
    int main()
    {
       for(int i=1; i<=49; i++)
          {
             a[i]=i;
          }
       int ans=1225;
       for(int i=1; i<=46; i++) ///48个符号
          {
             for(int j=i+2; j<=48; j++)
                {
                   ans+=a[i]*a[i+1]+a[j]*a[j+1];
                   ans-=a[i]+a[i+1]+a[j]+a[j+1];
                   if(ans==2015)
                      {
                         printf("%d  %d\n",i,j);
    //				return 0;
                      }
                   else  ans=1225;
                }
          }
       return 0;
    }
    

    牌型种数

     

    小明被劫持到X赌城,被迫与其他3人玩牌。

    一副扑克牌(去掉大小王牌,共52张),均匀发给4个人,每个人13张。

    这时,小明脑子里突然冒出一个问题:

    如果不考虑花色,只考虑点数,也不考虑自己得到的牌的先后顺序,自己手里能拿到的初始牌型组合一共有多少种呢?

     

    请填写该整数,不要填写任何多余的内容或说明文字。

    3598180

    #include<stdio.h>
    #include<algorithm>
    #include<iostream>
    using namespace std;
    
    int ans=0;
    void dfs(int x,int y)///第几个桶   手里拿了几张牌
    {
       if(y==13)
          {
             ans++;
             return ;
          }
       if(y>13)
          return ;
       if(x>13)
          return ;
       for(int i=0; i<=4; i++)
          dfs(x+1,y+i);
    }
    int main()
    {
       dfs(1,0);///
       cout<<ans<<endl;
       return 0;
    }

    蚂蚁感冒

    问题描述

      长100厘米的细长直杆子上有n只蚂蚁。它们的头有的朝左,有的朝右。
      每只蚂蚁都只能沿着杆子向前爬,速度是1厘米/秒。
      当两只蚂蚁碰面时,它们会同时掉头往相反的方向爬行。
      这些蚂蚁中,有1只蚂蚁感冒了。并且在和其它蚂蚁碰面时,会把感冒传染给碰到的蚂蚁。
      请你计算,当所有蚂蚁都爬离杆子时,有多少只蚂蚁患上了感冒。

    输入格式

      第一行输入一个整数n (1 < n < 50), 表示蚂蚁的总数。
      接着的一行是n个用空格分开的整数 Xi (-100 < Xi < 100), Xi的绝对值,表示蚂蚁离开杆子左边端点的距离。正值表示头朝右,负值表示头朝左,数据中不会出现0值,也不会出现两只蚂蚁占用同一位置。其中,第一个数据代表的蚂蚁感冒了。

    输出格式

      要求输出1个整数,表示最后感冒蚂蚁的数目。

    样例输入

    3
    5 -2 8

    样例输出

    1

    样例输入

    5
    -10 8 -20 12 25

    样例输出

    3

    #include<stdio.h>
    #include<algorithm>
    #include<string.h>
    using namespace std;
    #define inf 0x3f3f3f3f
    typedef long long ll;
    const int N=1e5+10;
    #include<vector>
    #include<math.h>
    
    int a[110];
    int main()
    {
       int n;
       scanf("%d",&n);
       for(int i=1; i<=n; i++)
          {
             scanf("%d",&a[i]);
          }
       int r=0,l=0;
       for(int i=2; i<=n; i++)
          {
             if(fabs(a[i])>fabs(a[1])&&a[i]<0)///相遇之后返方向走  向右边考虑
                r++;///比 a[1] 坐标绝对值大  且方向向左  则都感冒
             if(fabs(a[i])<fabs(a[1])&&a[i]>0)///相遇之后返方向走  向左边考虑
                l++;///比 a[1]  坐标绝对值小  且方向向右  则都感冒
          }
       if(a[1]<0&&l==0||a[1]>0&&r==0)///若 全向左  全向右  就只有第一只蚂蚁感冒
          printf("1\n");
       else printf("%d\n",l+r+1);
       return 0;
    }

    地宫取宝

    问题描述

      X 国王有一个地宫宝库。是 n x m 个格子的矩阵。每个格子放一件宝贝。每个宝贝贴着价值标签。

      地宫的入口在左上角,出口在右下角。

      小明被带到地宫的入口,国王要求他只能向右或向下行走。

      走过某个格子时,如果那个格子中的宝贝价值比小明手中任意宝贝价值都大,小明就可以拿起它(当然,也可以不拿)。

      当小明走到出口时,如果他手中的宝贝恰好是k件,则这些宝贝就可以送给小明。

      请你帮小明算一算,在给定的局面下,他有多少种不同的行动方案能获得这k件宝贝。

    输入格式

      输入一行3个整数,用空格分开:n m k (1<=n,m<=50, 1<=k<=12)

      接下来有 n 行数据,每行有 m 个整数 Ci (0<=Ci<=12)代表这个格子上的宝物的价值

    输出格式

      要求输出一个整数,表示正好取k个宝贝的行动方案数。该数字可能很大,输出它对 1000000007 取模的结果。

    样例输入

    2 2 2
    1 2
    2 1

    样例输出

    2

    样例输入

    2 3 2
    1 2 3
    2 1 5

    样例输出

    14

     

     

     

    小朋友排队

    问题描述

      n 个小朋友站成一排。现在要把他们按身高从低到高的顺序排列,但是每次只能交换位置相邻的两个小朋友。

      每个小朋友都有一个不高兴的程度。开始的时候,所有小朋友的不高兴程度都是0。

      如果某个小朋友第一次被要求交换,则他的不高兴程度增加1,如果第二次要求他交换,则他的不高兴程度增加2(即不高兴程度为3),依次类推。当要求某个小朋友第k次交换时,他的不高兴程度增加k。

      请问,要让所有小朋友按从低到高排队,他们的不高兴程度之和最小是多少。

      如果有两个小朋友身高一样,则他们谁站在谁前面是没有关系的。

    输入格式

      输入的第一行包含一个整数n,表示小朋友的个数。
      第二行包含 n 个整数 H1 H2 … Hn,分别表示每个小朋友的身高。

    输出格式

      输出一行,包含一个整数,表示小朋友的不高兴程度和的最小值。

    样例输入

    3
    3 2 1

    样例输出

    9

    样例说明

      首先交换身高为3和2的小朋友,再交换身高为3和1的小朋友,再交换身高为2和1的小朋友,每个小朋友的不高兴程度都是3,总和为9。

    数据规模和约定

      对于10%的数据, 1<=n<=10;
      对于30%的数据, 1<=n<=1000;
      对于50%的数据, 1<=n<=10000;
      对于100%的数据,1<=n<=100000,0<=Hi<=1000000。

     

    展开全文
  • 2018省赛第九届蓝桥杯真题Java语言B组;2018省赛第九届蓝桥杯真题Java语言B组;2018省赛第九届蓝桥杯真题Java语言B组;2018省赛第九届蓝桥杯真题Java语言B组;
  • 第三届蓝桥杯真题

    2012-06-07 22:56:08
    第三届蓝桥杯真题,看看挺好的,整合在一起了。
  • 14年参赛者整理的蓝桥杯真题和预测题,还有赛事环境说明,只求有用!
  • package A15; public class Demo01 { public static void main(String[] args) { int ans = 0; int n = 1543; while (n!=0){ if (n%2!=0){ ans++; } n /= 2; } System.out.println(ans);...}
  • 蓝桥杯真题及程序.rar

    2019-08-08 10:22:01
    蓝桥杯历年真题及示例程序集锦
  • python蓝桥杯真题 单词分析 题目描述 代码及解析 运行结果
  • 蓝桥杯真题!能够完成所有功能!可以拿来联系思路
  • 蓝桥杯真题加讲解Java组 看到DaSai都懂的啥,记得好评哦
  • java第三届蓝桥杯真题

    2012-05-10 22:09:47
    java第三届蓝桥杯真题
  • 第九届蓝桥杯真题

    2018-04-02 07:06:01
    此文件为2018年4月1日进行的第九届蓝桥杯竞赛真题,其中包含C语言和Java。
  • 精心整理的蓝桥杯真题以及答案,希望对大家有所帮助
  • 2019年4月1日蓝桥杯省赛第十届蓝桥杯真题C/C++(A组)!

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 11,367
精华内容 4,546
关键字:

蓝桥杯真题2015