【2023蓝桥杯】2018年第九届C/C++A组真题(解析笔记)

news2024/11/15 11:18:31

目录

♥【分数】循环累乘/快速幂运算/最大公因数

♥【星期一】闰年/周期循环

♥【乘积尾零】遍历/取余/取整

♥【第几个幸运数】 遍历

♥【打印图形】dfs填空

×【航班时间】字符串/思维/时间换算

×【三体攻击】差分!中等难度

♥【全球变暖】dfs/连通块+计数

*【倍数问题】暴力/数论/构造

×【付账问题】贪心


【分数】循环累乘/快速幂运算/最大公因数

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

1+1/2+1/4+1/8+⋯

每项是前一项的一半,如果一共有 2020 项,求这个和是多少,结果用分数表示出来。

类似:3/2,当然,这只是加了前 2项而已。分子分母要求互质。

考点:循环累乘/快速幂运算

int gcd=__gcd(a,sum);    //求最大公因数 

#include<bits/stdc++.h>
using namespace std;

int main(){
	int a=1;
	int sum=0;
	for(int i=1; i<=2020; i++){
		sum=sum+a;		//分子 
		a=a*2; 			//更新a,最终为分母 		
	}
	int gcd=__gcd(a,sum);	//求最大公因数 
	a = a/gcd; 				//除法
	sum = sum/gcd; 
	printf("%d/%d",sum,a/2);
}

【星期一】闰年/周期循环

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

整个 2020 世纪(1901 年 1 月 1 日至 2000年12 月 31 日之间),一共有多少个星期一?)5217

考点:闰年/周期循环

#include<bits/stdc++.h>
using namespace std;

//判断闰年
bool isleap(int x){
	return x%400==0||(x%4==0&&x%100!=0);
} 
int main(){
	int t=0;
	//计算总天数 
	for(int i=1901; i<=2000; i++){
		if(isleap(i))
		 t+=366;
		else t+=365;
	}
	//查日历已知2000年12月31日
	//扣除26日至31日的6天 
	t-=6; 
	int res=0;
	//从周一开始计数 
	for(int i=t; i>0; i-=7){
		res++;
	} 
	cout<<res<<endl;
}

【乘积尾零】遍历/取余/取整

乘积尾零 - 蓝桥云课 (lanqiao.cn)

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

如下的 1010 行数据,每行有 10个整数,请你求出它们的乘积的末尾有多少个零?

5650 4542 3554 473 946 4114 3871 9073 90 4329 
2758 7949 6113 5659 5245 7432 3051 4434 6704 3594 
9937 1173 6866 3397 4759 7557 3070 2287 1453 9899 
1486 5722 3135 1170 4014 5510 5120 729 2880 9019 
2049 698 4582 4346 4427 646 9742 7340 1230 7683 
5693 7015 6887 7381 4172 4341 2909 2027 7355 5649 
6701 6645 1671 5978 2704 9926 295 3125 3878 6785 
2066 4247 4800 1578 6652 4616 1113 6205 3264 2915 
3966 5291 2904 1285 2193 1428 2265 8730 9436 7074 
689 5510 8243 6114 337 4096 8199 7313 3685 211 

方法1:遍历/取余/取整

方法2:先找出多少个能相乘等于零;计算出里面有多少个数是包含5和2;然后比较找出有多少个可以5和2可以相乘等于零;然后输出

#include<bits/stdc++.h>
using namespace std;
long long a[10][10]; 

int main(){
	//读取数据 
	for(int i=1;i<=10;i++){
		for(int j=1; j<=10; j++){
			cin>>a[i][j];
		}
	}
	//计算乘积
	int count=0;
	long long res=1; 
	long long x=1000000000;
	for(int i=1;i<=10;i++){
		for(int j=1; j<=10; j++){
			//cout<<a[i][j]<<endl;
			res=res*a[i][j];
			//末尾为0计数 
			while(res%10==0){
				res/=10;
				count++; 
			} 
			res=res%x;
		}
	}
	cout<<count<<endl;
}
#include <iostream>
using namespace std;
int cnt2,cnt5;
int a[100];

int main(){
  for(int i=0;i<=99;i++){
   cin>>a[i];
    while(a[i]%2==0){
      cnt2++;
      a[i]/=2;
    }
    while(a[i]%5==0){
      cnt5++;
      a[i]/=5;
    }
  }
  cout << min(cnt2,cnt5) << endl;
  return 0;
}

【第几个幸运数】 遍历

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

到 X 星球旅行的游客都被发给一个整数,作为游客编号。

X 星的国王有个怪癖,他只喜欢数字 3,5 和7。

国王规定,游客的编号如果只含有因子:3,5,7,就可以获得一份奖品。

我们来看前 10 个幸运数字是:3,5,7,9,15,21,25,27,35,45因而第 11 个幸运数字是: 49
小明领到了一个幸运数字 59084709587505,他去领奖的时候,人家要求他准确地说出这是第几个幸运数字,否则领不到奖品。

请你帮小明计算一下,59084709587505是第几个幸运数字。 1905

方案:遍历

#include<bits/stdc++.h>
using namespace std;

int main(){
  //目标 n = a*b*c
  //a,b,c为3,5,7的倍数
  long long n = 59084709587505;
  int ans=0;
  for(long long i=1; i<=n; i*=3){
     for(long long j=1; i*j<=n; j*=5){
       for(long long k=1; k*i*j<=n; k*=7){
          ans++;
       }
     }
  }
  //排除1*1*1情况
  cout << ans - 1;
  return 0;
}

【打印图形】dfs填空

本题为代码补全填空题,请将题目中给出的源代码补全,并复制到右侧代码框中,选择对应的编译语言(C/Java)后进行提交。若题目中给出的源代码语言不唯一,则只需选择其一进行补全提交即可。复制后需将源代码中填空部分的下划线删掉,填上你的答案。提交后若未能通过,除考虑填空部分出错外,还需注意是否因在复制后有改动非填空部分产生错误。

如下的程序会在控制台绘制分形图(就是整体与局部自相似的图形)。

当 n=1,2,3 的时候,输出如下: 请仔细分析程序,并填写划线部分缺少的代码。

n=1 时:

 o 
ooo
 o 

 n=2 时:

    o    
   ooo   
    o    
 o  o  o 
ooooooooo
 o  o  o 
    o    
   ooo   
    o    

n=3 时 :

             o             
            ooo            
             o             
          o  o  o          
         ooooooooo         
          o  o  o          
             o             
            ooo            
             o             
    o        o        o    
   ooo      ooo      ooo   
    o        o        o    
 o  o  o  o  o  o  o  o  o 
ooooooooooooooooooooooooooo
 o  o  o  o  o  o  o  o  o 
    o        o        o    
   ooo      ooo      ooo   
    o        o        o    
             o             
            ooo            
             o             
          o  o  o          
         ooooooooo         
          o  o  o          
             o             
            ooo            
             o             

方法: 图像类似向外扩张,优先随机设数,查看基础实现效果,dfs填空

#include <stdio.h>
#include <stdlib.h>

void show(char* buf, int w){
    int i,j;
    for(i=0; i<w; i++){
        for(j=0; j<w; j++){
            printf("%c", buf[i*w+j]==0? ' ' : 'o');
        }
        printf("\n");
    }
}

void draw(char* buf, int w, int x, int y, int size){
    if(size==1){
        buf[y*w+x] = 1;
        return;
    }
    
    //int n = _________________________ ; //填空
    //int n = 1 ; //尝试效果 n=1 成立 
	int n = size/3 ; 
    draw(buf, w, x, y, n);
    draw(buf, w, x-n, y ,n);
    draw(buf, w, x+n, y ,n);
    draw(buf, w, x, y-n ,n);
    draw(buf, w, x, y+n ,n);
}

int main()
{
    int N ;
        scanf("%d",&N);
    int t = 1;
    int i;
    for(i=0; i<N; i++) t *= 3;
    
    char* buf = (char*)malloc(t*t);
    for(i=0; i<t*t; i++) buf[i] = 0;
    
    draw(buf, t, t/2, t/2, t);
    show(buf, t);
    free(buf);
    
    return 0;
}

【航班时间】字符串/思维/时间换算

航班时间 - 蓝桥云课 (lanqiao.cn)

小 h 前往美国参加了蓝桥杯国际赛。小 h 的女朋友发现小 h 上午十点出发,上午十二点到达美国,于是感叹到"现在飞机飞得真快,两小时就能到美国了"。

小 h 对超音速飞行感到十分恐惧。仔细观察后发现飞机的起降时间都是当地时间。由于北京和美国东部有 12 小时时差,故飞机总共需要 14 小时的飞行时间。 

不久后小 h 的女朋友去中东交换。小 h 并不知道中东与北京的时差。但是小 h 得到了女朋友来回航班的起降时间。小 h 想知道女朋友的航班飞行时间是多少。

对于一个可能跨时区的航班,给定来回程的起降时间。假设飞机来回飞行时间相同,求飞机的飞行时间。

方法:数学思维/思维/时间换算

#include<bits/stdc++.h>
using namespace std;

const int day = 24*60*60;    //全部转化为秒 
const int hour = 60*60;
const int minutes = 60;
 
int start() {      //出发时间 
    int a,b,c;
    scanf("%d:%d:%d",&a,&b,&c);
    int time = a*hour + b*minutes + c;
    return time;
}
 
int end() {   //到达时间 
    int a,b,c;
    scanf("%d:%d:%d",&a,&b,&c);
    int time = a*hour + b*minutes + c;
    char ch,extra_day;
    while( (ch = getchar())!='\n' && ch != '\r' ) {
        if(ch == '(') {
            getchar();  //除去"+" 
            extra_day = getchar();   //额外天数 
            time = time + (extra_day - '0')*day;
        }
    } 
    return time;
}
 
void display(int time) {    //显示时间 
    int a,b,c;
    a = time/hour;
    time = time % hour;
    b = time / minutes;
    time = time % minutes;
    c = time;
    printf("%02d:%02d:%02d\n",a,b,c);
}
 
int main() {
    int h1,m1,s1,h2,m2,s2;
    int t;
    scanf("%d",&t);
    while(t--) {
        int start1 = start();
        int end1 = end();
        int start2 = start();
        int end2 = end();
        int ans = 0;
        ans = (end1 - start1) + (end2 - start2);  //相加 
        display(ans/2);    //除2 
    }
    return 0;
}

【三体攻击】差分!中等难度

三体攻击 - 蓝桥云课 (lanqiao.cn)

 有难度的,暂不深入!

#include<iostream>
using namespace std;
const int N = 1000005;
int A, B, C, n, m;
int D[N];//三维差分数组 压维
int s[N];//存储舰队生命值
int x_1[N], y_1[N], z_1[N];//存储三体人的打击范围
int x_2[N], y_2[N], z_2[N];//存储三体人的打击范围
int d[N];//存储伤害
//将三维坐标转换为一维
int num(int x, int y, int z) {
    if (x > A || y > B || z > C)return 0;
    return ((x - 1) * B + (y - 1)) * C + (z - 1) + 1;
}
bool check(int x) {
    for (int i = 1;i <= n;i++)D[i] = 0;
    for (int i = 1;i <= x;i++) {
        D[num(x_1[i], y_1[i], z_1[i])]+=d[i];
        D[num(x_2[i] + 1, y_1[i], z_1[i])]-= d[i];
        D[num(x_1[i], y_2[i] + 1, z_1[i])]-= d[i];
        D[num(x_1[i], y_1[i], z_2[i] + 1)]-= d[i];
        D[num(x_2[i] + 1, y_2[i] + 1, z_1[i])]+= d[i];
        D[num(x_2[i] + 1, y_1[i], z_2[i] + 1)]+= d[i];
        D[num(x_1[i], y_2[i] + 1, z_2[i] + 1)]+= d[i];
        D[num(x_2[i] + 1, y_2[i] + 1, z_2[i] + 1)]-= d[i];
    }
    //将x,y看为定轴 对z进行累加
    for (int i = 1;i <= A;i++) {
        for (int j = 1;j <= B;j++) {
            for (int k = 1;k <= C;k++) {
                D[num(i, j, k + 1)] += D[num(i, j, k)];
            }
        }
    }
    //将x,z看为定轴 对y进行累加
    for (int k = 1;k <= C;k++) {
        for (int i = 1;i <= A;i++) {
            for (int j = 1;j <= B;j++) {
                D[num(i, j + 1, k)] += D[num(i, j, k)];
            }
        }
    }
    //将y,z看为定轴 对x进行累加
    for (int j = 1;j <= B;j++) {
        for (int k = 1;k <= C;k++) {
            for (int i = 1;i <= A;i++) {
                D[num(i + 1, j, k)] += D[num(i, j, k)];
            }
        }
    }
    for (int i = 1;i <= n;i++) {
        if (D[i] > s[i])return true;
    }
    return false;
}
int main() {
    cin >> A >> B >> C >> m;
    n = A * B * C;
    for (int i = 1;i <= n;i++) cin >> s[i];
    for (int i = 1;i <= m;i++) {
        cin >> x_1[i] >> x_2[i] >> y_1[i] >> y_2[i] >> z_1[i] >> z_2[i] >> d[i];
    }
    int L = 1;
    int R = m;
    while (L < R) {
        int mid = (L + R) >> 1;
        if (check(mid))R = mid;
        else L = mid + 1;
    }
    cout << L << endl;
    return 0;
}

【全球变暖】dfs/连通块+计数

dfs:深度优先遍历,问题1:递归深度深,栈内存不足!

bfs:宽度优先遍历,对象队列-官方

#include<bits/stdc++.h>
using namespace std;
int N;
const int SIZE = 1e4+4; 
char area[SIZE][SIZE];
bool flag;
int cnt; 
int d[4][2]={{1,0},{-1,0},{0,1},{0,-1}};
//注意:求的是被淹没的岛屿的数量   总岛屿数量-被淹没的岛屿的数量 
int ans=0;            //没有被淹没岛屿的数量 
int res_ans=0;        //岛屿的总数量 
//用DFS判断搜到的这个岛屿会不会被淹没,仅此而已,不需要返回什么 昨判断关系
void dfs(int x,int y)
{
    //一个岛屿只要有一个点满足就不会变淹没了
    if(flag==false){  
        cnt = 0;
    for(int i=0; i<4; i++){
        int tx=d[i][0]+x;
        int ty=d[i][1]+y;
        //四面环海 
        if(area[tx][ty]!='.')
        cnt++;
    }
    
    //有一个点满足不会被淹没的条件
    if(cnt==4){
        ans++;
        flag=true;//这个岛屿不需要再遍历了
         }
    }
    area[x][y]='*';//将遍历过的点变为 *,下一次就不会遍历他了,所以不用标记数组
    //注意这里不可以是‘.’因为上面if(area[tx][ty]!='.')cnt++
    for(int i=0;i<4;i++){
         int xx = x + d[i][0];
         int yy = y + d[i][1];
         //当前岛屿连接其他岛屿 
         if(area[xx][yy]=='#'&&x<N&&x>=0&&y<N&&y>=0)
         dfs(xx,yy);
    }
}
 
int main()
{    
    cin>>N; 
    //输入海洋和陆地的情况 
    for(int i=0; i<N; i++)
        for(int j=0; j<N; j++)
            cin>>area[i][j];
    //遍历查找陆地的位置情况       
    for(int i=0; i<N; i++){ 
        for(int j=0; j<N; j++){
            if(area[i][j]=='#'){
                res_ans++;
                flag=false;
                //判断当前岛屿会不会淹没 
                dfs(i,j);
            }
        }
    }        
    cout<<res_ans-ans;    
    return 0;
}

【倍数问题】暴力/数论/构造

倍数问题 - 蓝桥云课 (lanqiao.cn)

蓝桥杯第 8-10 届真题解析 - 2018 年省赛真题 9 倍数问题-(思路 + C) - 蓝桥云课 (lanqiao.cn)

众所周知,小葱同学擅长计算,尤其擅长计算一个数是否是另外一个数的倍数。但小葱只擅长两个数的情况,当有很多个数之后就会比较苦恼。现在小葱给了你 n 个数,希望你从这 n 个数中找到三个数,使得这三个数的和是 K 的倍数,且这个和最大。数据保证一定有解。

根据规模拿分,暴力就暴力吧

 自行加强,考前再看把。。。。。。

//基础分??
#include<bits/stdc++.h>
using namespace std;
int main(){
	//n个正整数,选数要求是K的倍数 
	int n,k;
	cin>>n>>k;
	int a[n];
	for(int i=0; i<n; i++){
		cin>>a[i];
	} 
	//符合条件的三个数和sum,最大的记为max
	int sum=0; 
	int maxsum=0; 
	for(int i=0; i<n; i++){
		for(int j=i+1; j<n; j++){
			for(int z=j+1; z<n; z++){
				sum = a[i]+a[j]+a[z];
				if(sum%3==0) maxsum=max(sum,maxsum);				
			}
		}
	}
	
	cout<<maxsum<<endl;
	return 0;
} 

【付账问题】贪心

蓝桥杯第 8-10 届真题解析 - 2018 年省赛真题 10 付账问题 - 蓝桥云课 (lanqiao.cn)

 

考前复习

贪心法:

  1. 准备贪心:先将花费数组从小到大排序
  2. 贪心策略:
    1. 从数组最小的元素开始,每次做判断
    2. 若当前元素小于剩余花费平均值,则取该元素不改变值,将平均成本转嫁到后续元素上
    3. 若当前元素大于等于剩余花费平均值,则后续元素也大于该平均值,能够承接前较小元素的成 本,将当前元素之后的所有元素取剩余花费平均值
  3. 结束贪心,解出标准差

精确度:

本题对于精确度要求较高,总结如下提升准确度的方法

  1. long long提升整数的准确度
  2. double可以承接18位左右有效数字
  3. 尽量减少除法,转换成乘法
  4. 尽量减少会导致误差的计算的次数
#include <cstdio>
#include <iostream>
#include <cmath>
#include <algorithm>
using namespace std;
typedef long long ll;

int main(){
  ll N;
  double S, avg = 0;
  cin >> N >> S;
  int A[500005];
  
  for(int i = 0; i < N; i++)
    cin >> A[i];
  avg = S*1.0/N;
  sort(A, A+N);

  double ans = 0;
  for(int i = 0 ;  i < N; i++){
    if(A[i]*(N-i) < S){
        ans += (avg - A[i]) * (avg - A[i]);
        S -= A[i];
    }
    else{
      double cur = S*1.0/(N-i);
      ans += (cur-avg)*(cur-avg)*(N-i);
      break;
    }
  }

  printf("%.4lf", sqrt(ans/N));
  return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/382927.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Python解题 - CSDN周赛第33期

本期四道题全考过&#xff0c;题解在网上也都搜得到。。。没有想法&#xff0c;顺手水一份题解吧。 第一题&#xff1a;奇偶排序 给定一个存放整数的数组&#xff0c;重新排列数组使得数组左边为奇数&#xff0c;右边为偶数。 输入描述&#xff1a;第一行输入整数n。(1<n<…

深究Java Hibernate框架下的Deserialization

写在前面 Hibernate是一个开源免费的、基于 ORM 技术的 Java 持久化框架。通俗地说&#xff0c;Hibernate 是一个用来连接和操作数据库的 Java 框架&#xff0c;它最大的优点是使用了 ORM 技术。 Hibernate 支持几乎所有主流的关系型数据库&#xff0c;只要在配置文件中设置好…

在 The Sandbox 中以全新的 Rabbids 体验庆祝兔年!

育碧(Ubisoft) 和 The Sandbox 联手为你们带来终极的农历新年体验&#xff01; 穿戴上你们新鲜出炉的 Rabbids 人物化身来参加派对吧&#xff0c;保证震撼整个元宇宙&#xff01;这个全新体验为 Rabbids 人物化身持有者专属。没有获得 Rabbids 人物化身吗&#xff1f;不要担心&…

【Java】P2 基础语法与运算符

Java 基础语法 运算符Java注释方法基本数据类型驼峰命名法Scanner类基本运算除法隐式转换逻辑运算符 以及 短路逻辑运算符三元运算符前言 上一节内容涵盖Java的基础知识&#xff0c;包含安装下载&#xff0c;JDK与JRE等。 链接&#xff1a;https://blog.csdn.net/weixin_43098…

java 多线程处理任务

首先介绍一下我的使用场景我在redis set集合中有几十万个行程id&#xff0c;我需要一个脚本来离线计算每个行程的里程&#xff0c;计算完了之后&#xff0c;将公里数填到mongodb的表中&#xff0c;并且删除set集合中这个元素。我的目录结构我们创建一个maven项目&#xff0c;然…

STM32之PWM

PWMPWM&#xff0c;英文名Pulse Width Modulation&#xff0c;是脉冲宽度调制缩写&#xff0c;它是通过对一系列脉冲的宽度进行调制&#xff0c;等效出所需要的波形&#xff08;包含形状以及幅值&#xff09;&#xff0c;对模拟信号电平进行数字编码&#xff0c;也就是说通过调…

Office 365用户报告

通过ADManager Plus的现成Office 365用户报告&#xff0c;您无需复杂的PowerShell脚本&#xff0c;即可查找Office 365环境中用户的重要信息。使用这些报告&#xff0c;您只需点击几次基于Web的控制台&#xff0c;即可提取Office 365环境中活动和不活动用户数量等信息&#xff…

Celery 分布式任务队列

1. 认识 Celery Celery 是一个 基于 Python 开发的分布式异步消息任务队列&#xff0c;可以实现任务异步处理&#xff0c;制定定时任务等。 异步消息队列&#xff1a;执行异步任务时&#xff0c;会返回一个任务 ID 给你&#xff0c;过一段时间后拿着任务 ID 去取执行结果定时…

进程的介绍

文章目录一.进程的概念1.1概念1.2进程的组成1.2.1 PCB中描述进程的特征二.进程的虚拟地址空间三.进程间的通信引入线程一.进程的概念 1.1概念 百科的介绍: 换句话说,一个跑起来的程序,就是一个进程,也就是在操作系统中运行的exe程序就是一个进程,如下图的进程列表 进程是操…

【女士,房间墙上凿个洞,看你在干嘛~】安全攻防内网渗透-绕过防火墙和安全检测,搭建DNS隐蔽隧道

作者&#xff1a;Eason_LYC 悲观者预言失败&#xff0c;十言九中。 乐观者创造奇迹&#xff0c;一次即可。 一个人的价值&#xff0c;在于他所拥有的。所以可以不学无术&#xff0c;但不能一无所有&#xff01; 技术领域&#xff1a;WEB安全、网络攻防 关注WEB安全、网络攻防。…

Java并发包提供了哪些并发工具类?

第19讲 | Java并发包提供了哪些并发工具类&#xff1f; 通过前面的学习&#xff0c;我们一起回顾了线程、锁等各种并发编程的基本元素&#xff0c;也逐步涉及了 Java 并发包中的部分内容&#xff0c;相信经过前面的热身&#xff0c;我们能够更快地理解 Java 并发包。 今天我要…

SpringBoot集成Swagger3.0(入门) 02

文章目录Swagger3常用配置注解接口测试API信息配置Swagger3 Docket开关&#xff0c;过滤&#xff0c;分组Swagger3常用配置注解 ApiImplicitParams,ApiImplicitParam&#xff1a;Swagger3对参数的描述。 参数名参数值name参数名value参数的具体意义&#xff0c;作用。required参…

mes系统核心业务流程及应用场景介绍

现在许多企业已经开始使用MES系统控制和管理工厂的生产过程&#xff0c;实时监控、诊断和控制生产过程&#xff0c;完成单元集成和系统优化。本文将为大家具体介绍一下MES系统的业务流程。 MES系统业务流程 1、计划调度MES系统承接了ERP订单&#xff0c;开始干预生产。该模块…

kaggle RSNA 比赛过程总结

引言 算算时间&#xff0c;有差不多两年多没在打kaggle了&#xff0c;自20年最后一场后&#xff08;其实之前也就打过两场&#xff0c;一场打铁&#xff0c;一场表格赛是金是银不太记得&#xff0c;当时相当于刺激战场&#xff0c;过拟合lb大赛太刺激了&#xff0c;各种trick只…

毕业设计 基于51单片机的指纹红外密码电子锁

基于51单片机的指纹红外密码电子锁1、项目简介1.1 系统框架1.2 系统功能2、部分电路设计2.1 STC89C52单片机最小系统电路设计2.2 矩阵按键电路电路设计2.3 液晶显示模块电路设计3、部分代码展示3.1 LCD12864显示字符串3.2 串口初始化实物图1、项目简介 选题指导&#xff0c;项…

动态规划|特殊的多行规划|dp[2][] 用两行元素分别记录状态变化

多行规划是我自己整理此类问题时起的名字&#xff0c;如有专属名词&#xff0c;麻烦评论告知 用于处理当动态规划中&#xff0c;需要记录多个值的状态变化时。 376. 摆动序列&#xff08;特殊的自定义二维dp&#xff09; 做惯了一般的动态规划&#xff0c;突然看到这种题目&a…

UDPTCP网络编程

udp编程接口 一个UDP程序的编写可以分为3步&#xff1a; 创建一个网络套接字&#xff1a; 它相当于文件操作时的文件描述符&#xff0c;是一个程序进行网络通讯的门户&#xff0c; 所有的网络操作都要基于它 绑定IP和端口&#xff1a; 需要为网络套接字填充IP和端口信息 但是…

Python - 操作txt文件

文章目录打开txt文件读取txt文件写入txt文件删除txt文件打开txt文件 open(file, moder, bufferingNone, encodingNone, errorsNone, newlineNone, closefdTrue)函数用来打开txt文件。 #方法1&#xff0c;这种方式使用后需要关闭文件 f open("data.txt","r&qu…

【Visual Studio】git提交代码时使用GPG

前言 下载安装GPG的过程省略,直接开始进行配置 0.visual studio 版本说明 其余版本未测试,但是应该也是可以的 1 获取GPG的密钥ID 1.1 window下可以打开Kleopatra查看生成好的密钥的密钥ID 1.2 也可以从命令行中获取 gpg --list-keys 红框位置,后16位就是密钥ID 2 配置.git…

QML MouseArea详解

1.MouseArea简介 MouseArea是一个不可见的项目&#xff0c;通常与一个可见的项目一起使用&#xff0c;以便为该项目提供鼠标处理。通过有效地充当代理&#xff0c;鼠标处理的逻辑可以包含在MouseArea项中。 常用属性&#xff1a; 属性 类型描述 containsMouse bool 光标当前…