IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> 2022蓝桥杯暑假练习赛3 -> 正文阅读

[Python知识库]2022蓝桥杯暑假练习赛3

2022蓝桥杯暑假练习赛3

全是暴力或模拟

题目:
1、试题 算法提高 栅格打印问题
在这里插入图片描述
解题方法:
1、特判掉(n<=1&&m<=1)的特殊情况
2、总共需要输出2n+1行,2m+1列。 根据题意输出时讨论当前行列的奇偶就行了。

#include<bits/stdc++.h>
using namespace std;
int n,m;
int main(){
    cin>>n>>m;
    if(n<=1&&m<=1) return 0;
    for(int i=1;i<=2*n+1;i++){
        for(int j=1;j<=2*m+1;j++){
            if(i%2==1){
                if(j%2==1) printf("+");
                else printf("-");
            }
            else{
                if(j%2==0) printf(" ");
                else printf("|");
            }
        }
        printf("\n");
    }
}

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

2、试题 算法训练 暗恋
在这里插入图片描述
解题方法:
1、题目要求的是最大纯色正方形,所以可能是由一个全1的正方形构成,也可能是由一个全0的正方形构成。
2、数据小,直接暴力O( n 3 n^3 n3)就可以水过去。对于每个点都考虑将其作为正方形的左上角的时候,可能构成的最大纯色正方形,不断更新最大边长ans,最后输出面积就行了。

#include<bits/stdc++.h>
using namespace std;
int r,c;
int mp[205][205];
int maxn,ans;

bool check(int x,int y,int le){
	int sum=0;
	for(int i=x;i<x+le;i++){
		for(int j=y;j<y+le;j++){
			if(mp[x][y]!=mp[i][j]) return false;
		}
	}
	return true;
}

void solve(){
	for(int i=1;i<=r;i++){
		for(int j=1;j<=c;j++){
			for(int len=ans+1;len<maxn;len++){
				if(i+len-1<=r&&j+len-1<=c){
					if(check(i,j,len)) ans=len;
				}
				else break;
			}
		}
	}
	cout<<ans*ans<<"\n";
}

int main(){
	cin>>r>>c;
	for(int i=1;i<=r;i++){
		for(int j=1;j<=c;j++){
			cin>>mp[i][j];
		}
	}
	maxn=max(r,c);
	solve();
}

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

3、试题 算法提高 大数加法
在这里插入图片描述
解题方法:
C++:直接模拟加法
Python:输入输出

#include<bits/stdc++.h>
using namespace std;
string s1,s2;
int a[1100],b[1100],c[1100];
int j=0,len;
int main()
{
	cin>>s1>>s2;
	for(int i=s1.length()-1;i>=0;i--)
	{
		a[j++]=s1[i]-'0';
	}
	j=0;
	for(int i=s2.length()-1;i>=0;i--)
	{
		b[j++]=s2[i]-'0';
	}
	int len=max(s1.length(),s2.length());
	int i,t=0;
	c[0]=(a[0]+b[0])%10;
	if(a[0]+b[0]>=10)
	{
		t=1;
	}
	for(i=1;i<len;i++)
	{
		int k;
		k=a[i]+b[i]+t;
		if(k>=10)
		{
			t=1;
			c[i]=k%10;
		}
		else
		{
			t=0;
			c[i]=k;
		}
	}
	if(a[len-1]+b[len-1]+t>=10) cout<<"1";
	for(int i=len-1;i>=0;i--)
	{
		cout<<c[i];
	}
}
a = int(input())
b = int(input())
print(a + b)

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

4、试题 算法训练 黑白无常
在这里插入图片描述
解题方法:
最多n=8,直接考虑二进制,用0~((1<<n)-1)表示所有可能的情况,然后暴力判断每种情况就行了。

#include<bits/stdc++.h>
using namespace std;
int n;
int num[10];
int wh[10],bl[10];
int bi[10];

bool check(int x,int co){
    int h=0,b=0;
    for(int i=0;i<n;i++){
        if(i==x) continue;
        if(bi[i]==1) b++;
        else h++;
    }
    if(co==1){
        if(b==wh[x]&&h==bl[x]) return true;
        else return false;
    }
    else{
        if(b==wh[x]&&h==bl[x]) return false;
        else return true;       
    }
}

int main(){
    scanf("%d",&n);
    for(int i=0;i<n;i++) num[i]=i;
    for(int i=0;i<n;i++) cin>>wh[i]>>bl[i];
    for(int i=0;i<(1<<n);i++){
        bool f=true;
        for(int j=0;j<n;j++) bi[j]=(i>>j)&1;
        for(int j=0;j<n;j++){
            f=f&&check(j,bi[j]);
        }
        if(f){
            int t=0;
            for(int j=0;j<n;j++){
                if(bi[j]==1){t=1;printf("%d",j+1);}
            }
            if(t==0) printf("0\n");
            return 0;
        }
    }
    puts("NoSolution.");
}

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

4、试题 算法提高 班级排名
在这里插入图片描述
解题方法:
题目要求每次统计完一门科目后,就输出一次DaDa的排名。
数据小,我们用map<string,int>来记录每个人的成绩,然后每次统计完一门科目后,取暴力获取当前排名。最后统一输出。

#include<bits/stdc++.h>
using namespace std;
int n,m,k,now;
string s;
map<string,int>mp;
int res[105],num;

int main(){
    cin>>n;
    for(int i=1;i<=n;i++){
        cin>>s;
        mp[s]=0;
    }
    cin>>m;
    for(int i=1;i<=m;i++){
        int cnt=0;
        for(int j=1;j<=n;j++){
            cin>>k>>s;
            mp[s]+=k;
            if(s=="DaDa") now=mp[s];
        }
        map<string,int>::iterator it;
        for(it=mp.begin();it!=mp.end();it++){
            if(it->second>now) cnt++;
        }
        res[++num]=cnt+1;
    }
    for(int i=1;i<=m;i++) printf("%d\n",res[i]);
}

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

6、试题 算法提高 棋盘多项式
在这里插入图片描述
解题方法:
八皇后的变式。
直接dfs,对于每个新到达的值为1的点,我们只考虑其上边和左边是否已经由车可以影响到该点,不能就标记该点,否则跳过。
每次如果棋盘上已经有当前考虑车的个数now,就做出贡献1,并返回。

#include<bits/stdc++.h>
using namespace std;
int n,cnt,res;
int mp[10][10];
bool vis[10][10];

bool check(int x,int y){
    if(mp[x][y]==0) return false;
    for(int i=x;i>=1&&mp[i][y]!=0;i--) if(vis[i][y]) return false;
    for(int j=y;j>=1&&mp[x][j]!=0;j--) if(vis[x][j]) return false;
    return true;
}

void dfs(int x,int y,int now){
    if(now==res){
        cnt++;
        return;
    }
    if(y==n+1){x++,y=1;}
    if(x==n+1)return;
    dfs(x,y+1,now);
    if(check(x,y)){
        vis[x][y]=1;
        dfs(x,y+1,now+1);
        vis[x][y]=0;
    }
}

int main(){
    cin>>n;
    for(int i=1;i<=n;i++){
        for(int j=1;j<=n;j++){
            cin>>mp[i][j];
        }
    }
    while(++res){
        cnt=0;
        memset(vis,0,sizeof(vis));
        dfs(1,1,0);
        if(cnt==0) break;
        cout<<cnt<<"\n";
    }
}
  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2021-08-02 10:46:25  更:2021-08-02 10:46:41 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/19 8:49:40-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码