蓝桥杯刷题(三)

简介: 蓝桥杯刷题

拼数:


题目描述

设有 n 个正整数 a1…an,将它们联接成一排,相邻数字首尾相接,组成一个最大的整数。


输入格式

第一行有一个整数,表示数字个数 n。


第二行有 n 个整数,表示给出的 n 个整数 ai。


输出格式

一个正整数,表示最大的整数


输入输出样例

输入 #1复制


3

13 312 343

输出


34331213

输入


4

7 13 4 246

输出


7424613

说明/提示

对于全部的测试点,保证 1≤n≤20,11≤ai≤109。

#include<iostream>
#include<string>
#include<algorithm>
using namespace std;
string s[21];int n;
bool cmp(string a,string b) { // &表示引用
    return (a+b > b+a);
}
int main(void) {
    cin >> n;
    for(int i=1;i<=n;++i) cin >> s[i];
    sort(s+1,s+n+1,cmp);
    for (int i=1;i<=n;++i) cout << s[i];
    return 0;
}
#include <iostream>
#include <algorithm>
using namespace std;
int n;
string a[25];
bool b[25];
bool check(string a,string b){
  if(a.compare(b)!=-1){
      return true;
  }else{
    return false;
  }
}
void kuaipai(string a[],int l,int r){
  if(l>=r){
    return;
  }
  string k=a[r];
  int i=l,j=r;
  while(i<j){
    while(i<j&&a[i]<=k) i++;
    a[j]=a[i];
    while(i<j&&a[j]>=k) j--;
    a[i]=a[j];
  }
  a[i]=k;
  kuaipai(a,i+1,r);
  kuaipai(a,l,i-1);
}
int main(){
  cin>>n;
  if(n==0){
    cout<<0;
    return 0;
  }
  string c="";
  for(int i=0;i<n;i++){
    cin>>a[i];
    c+=a[i]+'0';
  }
   int len=c.size();
  kuaipai(a,0,n-1);
  string ans;
  for(int i=n-1;i>=0;i--){
    ans+=a[i];
  }
  cout<<ans;
  return 0;
}

排序:


小蓝最近学习了一些排序算法,其中冒泡排序让他印象深刻。


在冒泡排序中,每次只能交换相邻的两个元素。


小蓝发现,如果对一个字符串中的字符排序,只允许交换相邻的两个字符, 则在所有可能的排序方案中,冒泡排序的总交换次数是最少的。


例如,对于字符串 lanlan 排序,只需要 11 次交换。对于字符串 qiao 排序,总共需要 44 次交换。


小蓝找到了很多字符串试图排序,他恰巧碰到一个字符串,需要 100次交 换,可是他忘了吧这个字符串记下来,现在找不到了。


请帮助小蓝找一个只包含小写英文字母且没有字母重复出现的字符串,对 该串的字符排序,正好需要 100 次交换。如果可能找到多个,请告诉小蓝最短的那个。如果最短的仍然有多个,请告诉小蓝字典序最小的那个。


运行限制

最大运行时间:1s

#include <iostream>
using namespace std;
int main()
{
//考虑冒泡排序的复杂度,对于拥有N个字母的字符串,最多需要交换N*(N-1)/2次(完全乱序时)
//易知N=15时,有15*14/2=105,即满足100次交换所需的最短字符串有15个字母。
//要求字典序最小,那么显然要取a~o这15个字典序最小的字母
/*
  逆向思考,目标字符串经过100次交换后,得到正序字符串abcdefghijklmno,而完全逆序的字符串onmlkjihgfedcba变成正序字符串需要105次交换,那么将完全逆序的字符串交换5次后,便能得到答案。
  而要求字典序最小,那么将j交换5次提到字符串最前面,就得到了最小的情况
*/
  printf("jonmlkihgfedcba");
  return 0;
}

数字三角形:

题目描述

上图给出了一个数字三角形。从三角形的顶部到底部有很多条不同的路径。对于每条路径,把路径上面的数加起来可以得到一个和,你的任务就是找到最大的和。



路径上的每一步只能从一个数走到下一层和它最近的左边的那个数或者右 边的那个数。此外,向左下走的次数与向右下走的次数相差不能超过 1。


输入描述

输入的第一行包含一个整数 (1≤N≤100),表示三角形的行数。


下面的 NN 行给出数字三角形。数字三角形上的数都是 0 至 100 之间的整数。


输出描述

输出一个整数,表示答案。


输入输出样例

示例


输入


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

输出

27

运行限制

最大运行时间:1s

最大运行内存: 256M

#include <iostream>
#include <vector>
#include <cmath>
using namespace std;
int a[105][105];
int n;
int dp[105][105];
int main(){
    cin>>n;
    for(int i=1;i<=n;i++){
        for(int j=1;j<=i;j++){
            cin>>a[i][j];
        }
    }
    int floge=0;
    dp[1][1]=a[1][1];
    for(int i=2;i<=n;i++){
        for(int j=1;j<=i;j++){
            dp[i][j]=max(dp[i-1][j],dp[i-1][j-1])+a[i][j];
        }
    }
    cout<<max(dp[n][(n+1)/2],dp[n][(n+2)/2]);
    return 0;
}


递增序列:


题目描述

本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。


对于一个字母矩阵,我们称矩阵中的一个递增序列是指在矩阵中找到两个字母,它们在同一行,同一列,或者在同一 4545 度的斜线上,这两个字母从左向右看、或者从上向下看是递增的。


例如,如下矩阵中

LANN
QIAO

有LN、LN、AN、AN、IO、AO、LQ、AI、NO、NO、AQ、IN、ANLN、LN、AN、AN、IO、AO、LQ、AI、NO、NO、AQ、IN、AN 等 13 个 递增序列。注意当两个字母是从左下到右上排列时,从左向右看和从上向下看 是不同的顺序。


对于下面的 30行 50 列的矩阵,请问总共有多少个递增序列?

VLPWJVVNNZSWFGHSFRBCOIJTPYNEURPIGKQGPSXUGNELGRVZAG
SDLLOVGRTWEYZKKXNKIRWGZWXWRHKXFASATDWZAPZRNHTNNGQF
ZGUGXVQDQAEAHOQEADMWWXFBXECKAVIGPTKTTQFWSWPKRPSMGA
BDGMGYHAOPPRRHKYZCMFZEDELCALTBSWNTAODXYVHQNDASUFRL
YVYWQZUTEPFSFXLTZBMBQETXGXFUEBHGMJKBPNIHMYOELYZIKH
ZYZHSLTCGNANNXTUJGBYKUOJMGOGRDPKEUGVHNZJZHDUNRERBU
XFPTZKTPVQPJEMBHNTUBSMIYEGXNWQSBZMHMDRZZMJPZQTCWLR
ZNXOKBITTPSHEXWHZXFLWEMPZTBVNKNYSHCIQRIKQHFRAYWOPG
MHJKFYYBQSDPOVJICWWGGCOZSBGLSOXOFDAADZYEOBKDDTMQPA
VIDPIGELBYMEVQLASLQRUKMXSEWGHRSFVXOMHSJWWXHIBCGVIF
GWRFRFLHAMYWYZOIQODBIHHRIIMWJWJGYPFAHZZWJKRGOISUJC
EKQKKPNEYCBWOQHTYFHHQZRLFNDOVXTWASSQWXKBIVTKTUIASK
PEKNJFIVBKOZUEPPHIWLUBFUDWPIDRJKAZVJKPBRHCRMGNMFWW
CGZAXHXPDELTACGUWBXWNNZNDQYYCIQRJCULIEBQBLLMJEUSZP
RWHHQMBIJWTQPUFNAESPZHAQARNIDUCRYQAZMNVRVZUJOZUDGS
PFGAYBDEECHUXFUZIKAXYDFWJNSAOPJYWUIEJSCORRBVQHCHMR
JNVIPVEMQSHCCAXMWEFSYIGFPIXNIDXOTXTNBCHSHUZGKXFECL
YZBAIIOTWLREPZISBGJLQDALKZUKEQMKLDIPXJEPENEIPWFDLP
HBQKWJFLSEXVILKYPNSWUZLDCRTAYUUPEITQJEITZRQMMAQNLN
DQDJGOWMBFKAIGWEAJOISPFPLULIWVVALLIIHBGEZLGRHRCKGF
LXYPCVPNUKSWCCGXEYTEBAWRLWDWNHHNNNWQNIIBUCGUJYMRYW
CZDKISKUSBPFHVGSAVJBDMNPSDKFRXVVPLVAQUGVUJEXSZFGFQ
IYIJGISUANRAXTGQLAVFMQTICKQAHLEBGHAVOVVPEXIMLFWIYI
ZIIFSOPCMAWCBPKWZBUQPQLGSNIBFADUUJJHPAIUVVNWNWKDZB
HGTEEIISFGIUEUOWXVTPJDVACYQYFQUCXOXOSSMXLZDQESHXKP
FEBZHJAGIFGXSMRDKGONGELOALLSYDVILRWAPXXBPOOSWZNEAS
VJGMAOFLGYIFLJTEKDNIWHJAABCASFMAKIENSYIZZSLRSUIPCJ
BMQGMPDRCPGWKTPLOTAINXZAAJWCPUJHPOUYWNWHZAKCDMZDSR
RRARTVHZYYCEDXJQNQAINQVDJCZCZLCQWQQIKUYMYMOVMNCBVY
ABTCRRUXVGYLZILFLOFYVWFFBZNFWDZOADRDCLIRFKBFBHMAXX

运行限制

最大运行时间:1s

最大运行内存: 128M

#include <iostream>
#include <cmath>
using namespace std;
int ans;
char a[35][55];
int main(){
  for(int i=0;i<30;i++){
    for(int j=0;j<50;j++){
      cin>>a[i][j];
    }
  }
  for(int i=0;i<30;i++){
    for(int j=0;j<50;j++){
      for(int x=0;x<30;x++){
        for(int y=0;y<50;y++){
          if(i==x && j==y){
            continue;
          }
          int c=abs(i-x);
          if(i==x && a[i][j]<a[x][y] && y>j){
            ans++;
          }
          if(j==y && a[i][j]<a[x][y] && x>i) {
            ans++;
          }
          if(i+j==x+y && x>i && a[i][j]!=a[x][y]){
            ans++;
          }
          if(j+c==y && x>i&&a[i][j]<a[x][y]){
            ans++;
          }
        }
      }
    }
  }
  cout<<ans;
  return 0;
}

相关文章
|
10月前
|
存储 安全 算法
物联网发布者在发送数据时如何保证数据的安全性和完整性
数据加密、密钥管理和数据完整性验证是物联网安全的重要组成部分。对称加密(如AES)和非对称加密(如RSA)分别适用于大量数据和高安全需求的场景。密钥需安全存储并定期更新。数据完整性通过MAC(如HMAC-SHA256)和数字签名(如RSA签名)验证。通信协议如MQTT over TLS/SSL和CoAP over DTLS增强传输安全,确保数据在传输过程中的机密性和完整性。
|
JavaScript Java 测试技术
基于SpringBoot+Vue+uniapp的作品集展示微信小程序的详细设计和实现(源码+lw+部署文档+讲解等)
基于SpringBoot+Vue+uniapp的作品集展示微信小程序的详细设计和实现(源码+lw+部署文档+讲解等)
145 0
|
JavaScript Java 测试技术
基于springboot+vue.js+uniapp的地方特色美食分享管理系统附带文章源码部署视频讲解等
基于springboot+vue.js+uniapp的地方特色美食分享管理系统附带文章源码部署视频讲解等
150 2
|
搜索推荐 安全 数据可视化
关于软件定制开发,你关心的问题都在这里了
定制化软件是一种基于标准化成品软件的软件模式,它是针对企业特定需求量身定做的一系列软件。这种软件可以根据企业自身的业务和工作流程来减少或增加功能,从而更好地帮助企业实现其功能。
|
缓存 分布式计算 数据可视化
Spring Boot + URule规则引擎,太顶了!
前段时间,在做项目重构的时候,遇到很多地方需要做很多的条件判断。当然可以用很多的if-else判断去解决,但是当时也不清楚怎么回事,就想玩点别的。于是乎,就去调研了规则引擎。 当然,市面上有很多成熟的规则引擎,功能很多,性能很好。但是,就是想玩点不一样的(大家做技术选型别这样,这个是反面教材)。最终一款URule的规则引擎吸引了我,主要还是采用浏览器可直接配置,不需要过多安装,可视化规则也做的不错。经过一系列调研,后面就把它接入了项目中,顺便记录下调研的结果。
Spring Boot + URule规则引擎,太顶了!
|
设计模式 算法 Java
重温经典《Thinking in java》第四版之第九章 接口(四十七)
重温经典《Thinking in java》第四版之第九章 接口(四十七)
104 0
|
数据可视化 前端开发 C#
WPF技术之图形系列Ellipse控件
WPF Ellipse是Windows Presentation Foundation (WPF)中的一个图形控件,它用于绘制椭圆形状。在WPF中,Ellipse可以用于创建具有椭圆形状的可视化效果,可以设置其位置、大小、填充颜色等属性。
1538 0
|
存储 关系型数据库 MySQL
Mysql插入emoji表情报错java.sql.SQLException: Incorrect string value: '\xF0\x9F\x90\xB8'
Mysql插入emoji表情报错java.sql.SQLException: Incorrect string value: '\xF0\x9F\x90\xB8'
405 0
|
C语言
C语言:计算n的阶乘(不考虑溢出)
题目: 从键盘输入一个值n,计算n的阶乘, 如:输入5,计算5的阶乘 --> 5! = 1 * 2 * 3 * 4 * 5
165 0