文章推荐

  • 精选java等全套学习资源
  • 精选java电子图书资源
  • 精选大数据学习资源
  • java项目练习精选

蓝桥杯练习系统习题-算法提高2

题目搜索方式:Ctrl+F—-> 输入题目名称—>定位到解答.

入门训练(详见 算法-蓝桥杯习题(1-1))

基础练习(详见 算法-蓝桥杯习题(2-1))

基础练习(详见 算法-蓝桥杯习题(2-2))

算法训练(详见 算法-蓝桥杯习题(3-1))

算法训练(详见 算法-蓝桥杯习题(3-2))

算法训练(详见 算法-蓝桥杯习题(3-3))

算法训练(详见 算法-蓝桥杯习题(3-4))

算法训练(详见 算法-蓝桥杯习题(3-5))

算法训练(详见 算法-蓝桥杯习题(3-6))

算法提高(详见 算法-蓝桥杯习题(4-1))

算法提高(详见 算法-蓝桥杯习题(4-2))

历届试题(详见 算法-蓝桥杯习题(5-1))

历届试题(详见 算法-蓝桥杯习题(5-2))

Torry的困惑(提高型)

 #include<stdio.h>
 #include<math.h>
 int is_prime(int x) {
     int i,s = sqrt(x);
     for(i = 2; i <= s; i++) {
         if(x % i == 0) {
             return 0;
         }
     }
     return 1;
 }
 int main()
 {
     //("%d",is_prime(2));
     int n,count=0,i=1;
     long long result=1;
     scanf("%d",&n);
     while(count<n)
     {
         i++;
         if(is_prime(i))
         {
             result=(result%50000)*(i%50000)%50000;
             count++;
         }
     }
     printf("%I64d\n",result);
     return 0;
 }

计算时间

#include <stdio.h>
 #include <stdlib.h>
 int b[100000][3];
 int main(int argc, char *argv[]) {
     int i,n=0,a;
     scanf("%d",&n);
         for(i=0;i<n;i++)
         {
             scanf("%d",&a);
             b[i][0]=a%60;a/=60;
             b[i][1]=a%60;
             b[i][2]=a/=60;
         }
     for(i=0;i<n;i++)
     {
         printf("%02d:%02d:%02d\n",b[i][2],b[i][1],b[i][0]);
     }
     return 0;
 }

最小乘积(提高型)

 #include "stdio.h"
 #define Size 1002
 int part1(int a[],int left,int right)
 {
     int x;
     int low;
     int high;
     x=a[left];
     low=left;
     high=right;
     while(low<high)
     {
         while(a[high]>x&&low<high)
         {
             high--;
         }
         if(low<high)
         {
             a[low]=a[high];
             low++;
         }
         while(a[low]<x&&low<high)
         {
             low++;
         }
         if(low<high)
         {
             a[high]=a[low];
             high--;
         }
     }
     a[low]=x;
     return low;
 }
 int part2(int a[],int left,int right)
 {
     int x;
     int low;
     int high;
     x=a[left];
     low=left;
     high=right;
     while(low<high)
     {
         while(a[high]<x&&low<high)
         {
             high--;
         }
         if(low<high)
         {
             a[low]=a[high];
             low++;
         }
         while(a[low]>x&&low<high)
         {
             low++;
         }
         if(low<high)
         {
             a[high]=a[low];
             high--;
         }
     }
     a[low]=x;
     return low;
 }
 void sort2(int a[],int low,int high)
 {
     int mid;
     if(low<high)
     {
         mid=part2(a,low,high);
         sort2(a,low,mid-1);
         sort2(a,mid+1,high);
     }
 }
 void sort1(int a[],int low,int high)
 {
     int mid;
     if(low<high)
     {
         mid=part1(a,low,high);
         sort1(a,low,mid-1);
         sort1(a,mid+1,high);
     }
 }
 int main()
 {
     int T;
     int n;
     int i;
     int a[Size];
     int b[Size];
     int l;
     int sum;
     scanf("%d",&T);
     while(T)
     {
         scanf("%d",&n);
         for(i=1;i<=n;i++)
         {
             scanf("%d",&a[i]);
         }
         for(i=1;i<=n;i++)
         {
             scanf("%d",&b[i]);
         }
         sort1(a,1,n);
         sort2(b,1,n);
         sum=0;
         for(l=1;l<=n;l++)
         {
             sum=sum+(a[l]*b[l]);
         }
         printf("%d",sum);
         printf("\n");
         T--;
     }
     return 0;
 }

卡勒沃夫之弱水路三千(提高型)

 #include<stdio.h>
 #include<string.h>
 #include<stdlib.h>
 char mm[105][15];
 char s1[15],s2[15];
 int link[105][2];
 int length[105]={0};
 int in[105];
 int N;
 typedef struct{
     char name[15];
     int num;
 }girl;
 void fun(int x)
 {
     int i,y;
     for(i=0;i<N;i++)
         if(link[i][0]==x)
         {
             y=link[i][1];
             length[ y ]=length[x]+1>=length[y]?length[x]+1:length[y];
             fun(y);
         }
 }
 int comp(const void *a, const void *b)
 {
     return (*(girl *)a).num>(*(girl *)b).num?1:-1;
 }
 int main()
 {
     int i,j,T,n,f,x,y,sum=0;
     girl g[105];
     scanf("%d",&T);
     while(T--)
     {
         memset(mm,0,sizeof(mm));
         memset(link,0,sizeof(mm));
         memset(in,0,sizeof(in));
         memset(length,0,sizeof(length));
         scanf("%d",&N);
         n=0;
         for(i=0;i<N;i++)
         {
             scanf("%s%s",s1,s2);
             f=0;
             for(j=0;j<n;j++)
                 if(strcmp(s1,mm[j])==0)
                 {
                     f=1;
                     break;
                 }
             if(f==1)
                 x=j;
             else
             {
                 strcpy(mm[n++],s1);
                 x=n-1;
             }
             f=0;
             for(j=0;j<n;j++)
                 if(strcmp(s2,mm[j])==0)
                 {
                     f=1;
                     break;
                 }
             if(f==1)
                 y=j;
             else
             {
                 strcpy(mm[n++],s2);
                 y=n-1;
             }
             link[i][0]=x;
             link[i][1]=y;
         }
         for(i=0;i<N;i++)
             in[link[i][1]]++;
         for(i=0;i<n;i++)
             if(in[i]==0)
                 break;
         fun(i);
         for(i=0;i<n;i++)
         {
             strcpy(g[i].name,mm[i]);
             g[i].num=length[i];
         }
         qsort(g,n,sizeof(g[0]),comp);
         for(i=0;i<n;i++)
         {
             printf("%s",g[i].name);
             if(i==n-1)
                 printf("\n");
             else
                 printf(" ");
         }
     }
     return 0;
 }

最大乘积

#include<stdio.h>
 #include<stdlib.h>
 #include<string.h>
 int max;
 void fun(int *val,int index,int size,int m,int cnt,int res);
 int main()
 {
     int n,m,x,i;
     int val[15];
     scanf("%d",&x);
     while(x--)
     {
         scanf("%d %d",&n,&m);
         for(i=0;i<n;i++)
         {
             scanf("%d",&val[i]);
         }
         max = -10000000;
         fun(val,0,n,m,0,1);
         printf("%d\n",max);
     }
     return 0;
 }
 void fun(int *val,int index,int size,int m,int cnt,int res)
 {
     if(m==cnt)
     {
         if(res > max)
         {
             max = res;
         }
         return ;
     }
     if(index>=size)
     {
         return ;
     }
     fun(val,index+1,size,m,cnt+1,res*val[index]);
     fun(val,index+1,size,m,cnt,res);
 }

和最大子序列

 #include<stdio.h>
 int a[100001];
 int main()
 {
     int n,i1;
     scanf("%d",&n);
     for(i1=0;i1<n;i1++)
           scanf("%d",&a[i1]);
     int sum=-100098087;
     for(i1=1;i1<n;i1++)
         {if(a[i1-1]>0)
            a[i1]=a[i1-1]+a[i1];
            }
    for(i1=0;i1<n;i1++)
         if(a[i1]>sum)
            sum=a[i1];
    printf("%d\n",sum);
     return 0;
 }

统计单词数

 #include<stdio.h>
 #include<string.h>
 struct ha
 {   int n;
     char c[21];
 }hasi[1000];
 int main()
 {  int i1,i2;
     char a[1500],b[21];
     gets(a);
     int o=0,p=0;
     for(i1=0;a[i1];i1++)
     {  if(a[i1]<='z'&&a[i1]>='a')
          a[i1]-='a'-'A';
     }
     for(i1=0;a[i1+1];i1++)
     {
         if(a[i1]<'A'||a[i1]>'z'||a[i1]<'a'&&a[i1]>'Z')
         {  b[o]='\0';
            if(o==0)
                continue;
            for(i2=0;i2<p;i2++)
               {
                    if(!strcmp(hasi[i2].c,b))
                    {  hasi[i2].n++;
                       break;
                     }
             }
             if(i2==p)
             {
                 strcpy(hasi[p].c,b);
                 hasi[p].n=1;
                 p++;
               }
             o=0;
             continue;
         }
         b[o++]=a[i1];
     }
       b[o]='\0';
            for(i2=0;i2<p;i2++)
               {
                    if(!strcmp(hasi[i2].c,b))
                    {  hasi[i2].n++;
                       break;
                     }
             }
             if(i2==p)
             {
                 strcpy(hasi[p].c,b);
                 hasi[p].n=1;
                 p++;
               }
     for(i1=0;i1<p;i1++)
       {
            for(i2=0;hasi[i1].c[i2];i2++)
                if(hasi[i1].c[i2]<='Z'&&hasi[i1].c[i2]>='A')
                      printf("%c",hasi[i1].c[i2]);
                 else
                     printf("%c",hasi[i1].c[i2]-'a'+'A');
            printf(":");
            for(i2=0;i2<hasi[i1].n;i2++)
               printf("*");
            printf("%d",hasi[i1].n);
            printf("\n");
     }
     return 0;
 }

实数相加

 #include<stdio.h>
 int a[101],b[101],c[101],d[101],e[101],f[101];
 int main()
 {  char k[1000],l[1001];
    int i1,i2,a1,b1,c1,d1,e1,f1;
     gets(k);
     gets(l);
     int o=0;
     for(i1=0;k[i1];i1++)
      {
         if(k[i1]=='.')
            {i1++;
             break;}
         a[o++]=k[i1]-'0';
      }
      a1=o;
      o=0;
      for(;k[i1];i1++)
      {
         b[o++]=k[i1]-'0';
      }
      b1=o;
      o=0;
     for(i1=0;l[i1];i1++)
      {
         if(l[i1]=='.')
            {i1++;
             break;}
         c[o++]=l[i1]-'0';
      }
      c1=o;
       o=0;
      for(;l[i1];i1++)
      {
         d[o++]=l[i1]-'0';
      }
      d1=o;
      o=0;
      int jiwei=0;
      for(i1=b1-1,i2=d1-1;i1>=0||i2>=0;)
      {
         if(i1==i2)
          {
             f[o]=(b[i1]+d[i2]+jiwei)%10;
             jiwei=(b[i1]+d[i2]+jiwei)/10;
             o++;i1--;i2--;
          }
          else if(i1>i2)
          {  f[o]=(b[i1]+jiwei)%10;
             jiwei=(b[i1]+jiwei)/10;
             o++;i1--;
          }
          else
          {
             f[o]=(d[i2]+jiwei)%10;
             jiwei=(d[i2]+jiwei)/10;
             o++;i2--;
          }
      }
      f1=o;
      o=0;
      for(i1=a1-1,i2=c1-1;i1>=0||i2>=0;i1--,i2--)
      {
         if(i1<0)
         {  e[o]=(c[i2]+jiwei)%10;
            jiwei=(c[i2]+jiwei)/10;
             o++;
          }
          else if(i2<0)
          {e[o]=(a[i1]+jiwei)%10;
            jiwei=(a[i1]+jiwei)/10;
             o++;
         }
         else
           {e[o]=(a[i1]+c[i2]+jiwei)%10;
            jiwei=(a[i1]+c[i2]+jiwei)/10;
             o++;
          }
      }
      if(jiwei==1)
         e[o++]=1;
      for(i1=o-1;i1>=0;i1--)
          printf("%d",e[i1]);
        if(b1==0&&d1==0)
           return 0;
       printf(".");
      for(i1=f1-1;i1>=0;i1--)
          printf("%d",f[i1]);
       return 0;
 }

项链

 #include<stdio.h>
 #include<string.h>
 int main()
 {
     char a[1000];
     int i1,i2;
     gets(a);
     int max=0,n=strlen(a);
     int total=0;
     for(i1=0;a[i1];i1++)
     {
          char p='w';
          total=0;
          for(i2=i1;;i2++)
           {   if(i2>=n)
                   i2-=n;
              if(p=='w'||a[i2]==p||a[i2]=='w')
                {
                     if(a[i2]!='w')
                         p=a[i2];
                     total++;
                }
              else
                   break;
             if(total>=n)
                break;
           }
           p='w';
          for(i2=i1-1;;i2--)
          {   if(total>=n)
                   break;
               if(i2<0)
                  i2+=n;
               if(p=='w'||a[i2]==p||a[i2]=='w')
                  {    if(a[i2]!='w')
                      p=a[i2];
                      total++;
                   }
               else
                   break;
          }
           if(total>max)
               max=total;
     }
      printf("%d\n",max);
     return 0;
 }

交换Easy

 #include <stdio.h>
 int main()
 {
     int n,m,ary[1000],temp,op1,op2;
     scanf("%d %d",&n,&m);
     int i;
     for(i=0;i<n;i++)
     {
         scanf(" %d",&ary[i]);
     }
     for(i=0;i<m;i++)
     {
         scanf(" %d %d",&op1,&op2);
         if(op1 != op2)
         {
             temp=ary[op1-1];
             ary[op1-1]=ary[op2-1];
             ary[op2-1]=temp;
         }
     }
     for(i=0;i<n;i++)
     {
         printf("%d\n",ary[i]);
     }
 }

文章精选

java等电子图书分享

微信公众号

蓝桥杯练习系统习题-算法提高2相关推荐

  1. 蓝桥杯练习系统习题-算法提高1

    文章推荐 精选java等全套学习资源 精选java电子图书资源 精选大数据学习资源 java项目练习精选 蓝桥杯练习系统习题-算法提高1 题目搜索方式:Ctrl+F--> 输入题目名称-> ...

  2. 蓝桥杯练习系统习题-算法训练6

    文章推荐 精选java等全套学习资源 精选java电子图书资源 精选大数据学习资源 java项目练习精选 蓝桥杯练习系统习题-算法训练6 题目搜索方式:Ctrl+F--> 输入题目名称-> ...

  3. 蓝桥杯练习系统习题-算法训练5

    文章推荐 精选java等全套学习资源 精选java电子图书资源 精选大数据学习资源 java项目练习精选 蓝桥杯练习系统习题-算法训练5 题目搜索方式:Ctrl+F--> 输入题目名称-> ...

  4. 蓝桥杯练习系统习题-算法训练3

    文章推荐 精选java等全套学习资源 精选java电子图书资源 精选大数据学习资源 java项目练习精选 蓝桥杯练习系统习题-算法训练3 题目搜索方式:Ctrl+F--> 输入题目名称-> ...

  5. 蓝桥杯练习系统习题-算法训练2

    文章推荐 精选java等全套学习资源 精选java电子图书资源 精选大数据学习资源 java项目练习精选 蓝桥杯练习系统习题-算法训练2 题目搜索方式:Ctrl+F--> 输入题目名称-> ...

  6. 蓝桥杯练习系统习题-算法训练1

    蓝桥杯练习系统习题-算法训练1 题目搜索方式:Ctrl+F--> 输入题目名称->定位到解答. 入门训练(详见 算法-蓝桥杯习题(1-1)) 基础练习(详见 算法-蓝桥杯习题(2-1)) ...

  7. 蓝桥杯练习系统习题-历年真题解析2(完整版)

    文章推荐 精选java等全套学习资源 精选java电子图书资源 精选大数据学习资源 java项目练习精选 蓝桥杯练习系统习题-历年真题解析2 题目搜索方式:Ctrl+F--> 输入题目名称-&g ...

  8. 蓝桥杯练习系统习题-历年真题解析1(完整版)

    文章推荐 精选java等全套学习资源 精选java电子图书资源 精选大数据学习资源 java项目练习精选 蓝桥杯练习系统习题-历年真题解析1 题目搜索方式:Ctrl+F--> 输入题目名称-&g ...

  9. 蓝桥杯练习系统习题-基础训练2

    文章推荐 精选java等全套学习资源 精选java电子图书资源 精选大数据学习资源 java项目练习精选 蓝桥杯练习系统习题-基础训练2 题目搜索方式:Ctrl+F--> 输入题目名称-> ...

最新文章

  1. 发测试邮件或垃圾邮件node脚本
  2. 开发日记-20190820 关键词 读书笔记《Unix环境高级编程(第二版)》DAY 1
  3. Qt实现拖动一个lineEdit同时拖动mainwindow
  4. MatLab 自编的 均值滤波、中值滤波、高斯滤波 图像处理函数
  5. 夫妻两人同一个银行各自存50万,银行破产了该赔多少?
  6. pip matplotlib 使用镜像源,pytorch 1.5 cpu
  7. anaconda如何装python_如何在已安装Python条件下,安装Anaconda,,并将原有Python添加到Anaconda中...
  8. Eclipse Debug调试详解
  9. Asp.net Web Api 路由 和 异常处理
  10. 高等代数第3版下 [丘维声 著] 2015年版_全国硕士研究生入学统一考试管理类联考综合能力考试大纲(2021年版)...
  11. 英特尔®以太网700系列的动态设备个性化
  12. 如何利用Social Listening从社会化媒体中“提炼”有价值的信息?
  13. lzr 登机牌扫描access_lzr1.top
  14. Conditional Generative Adversarial Nets(CGAN)
  15. Android添加手机黑名单,手机来电拦截实现详解与Demo,一个不错的练手项目,涵盖Android四大组件。
  16. 微信授权二维码样式修改
  17. Windows中Nginx下载、安装、配置
  18. MATLAB中图像的读取与显示及灰度
  19. logback彩色字符编码说明
  20. perl unicode

热门文章

  1. ERP系统模块完全解析──工作中心
  2. EOS账户系统(4)账户权限分级
  3. BUUCTF--[GWCTF 2019]re3学习记录
  4. [HOW TO]-github/gitee的仓库统一管理
  5. [De1CTF2019]Babylfsr
  6. /dev/tcp 的简单应用
  7. angr学习笔记(8)(文件内容符号化)
  8. 蜜罐中利用jsonp跨域漏洞和xss漏洞的分析
  9. Windows系统调用学习笔记(二)—— 3环进0环
  10. ==与equals,String的equals()方法