第七届蓝桥杯b组省赛--备战蓝桥杯版h

0煤球数目 - 蓝桥云课

计数找规律题

第一层1个,第二层1+2个,第三层1+2+3个,第四层1+2+3+4个。。。

cpp 复制代码
#include<iostream>
#include<algorithm>
#include<cstring>
using namespace std;

int main()
{
	int a[105]={0};
	a[1]=1;
	for(int i=2;i<=100;i++)
	{
		a[i]=a[i-1]+i;
	}
	int sum=0;
	for(int i=1;i<=100;i++)
	{
		sum+=a[i];
	}
	cout<<sum<<endl;
	return 0;
} 

0生日蜡烛 - 蓝桥云课

枚举

cpp 复制代码
#include<iostream>
#include<algorithm>
#include<cstring>
using namespace std;

int sum(int x)
{
	return (x+1)*x/2;
}

int main()
{
	for(int i=1;i<=100;i++)
	{
		for(int j=i+1;j<=100;j++)
		{
			if(sum(j)-sum(i-1)==236)
			{
				cout<<i<<endl;
				return 0;
			}
		}
	}
	return 0;
} 

0凑算式 - 蓝桥云课

dfs来枚举不同的全排列,然后看是否符合要求

cpp 复制代码
#include<iostream>
#include<cstring>
#include<algorithm>
#include<cmath>
using namespace std;
int path[10];

bool st[10];
int cnt=0;
bool check()
{
	double a=(double)path[1];
	double b=(double)path[2]/path[3];
	double x=(double)path[4]*100+path[5]*10+path[6];
	double y=(double)path[7]*100+path[8]*10+path[9];
	if(path[3]==0||path[7]==0)return false;
	if(path[4]==0||path[7]==0)return false;
	if(fabs(a+b+x/y-10)<1e-8)
	{
		return true;
	}
	return false;
	
}

void dfs(int x)
{
	if(x>9)
	{
		if(check())
		{
			cnt++;
		}
		return;
	}
	for(int i=1;i<=9;i++)
	{
		if(!st[i])
		{
			st[i]=true;
			path[x]=i;
			dfs(x+1);
			st[i]=false;
		}
	}
}

int main()
{
	dfs(1);
	cout<<cnt<<endl;
	return 0; 
} 

0方格填数 - 蓝桥云课

其实就是dfs/bfs解决就行

cpp 复制代码
#include<iostream>
#include<algorithm>
#include<cstring>
using namespace std;
const int N=4;
int dx[8]={1,-1,0,0,1,1,-1,-1};
int dy[8]={0,0,1,-1,1,-1,1,-1};
int g[3][4]={{0,1,1,1},{1,1,1,1},{1,1,1,0}};
int grid[N][N];
bool used[10];
int ans=0;

bool check(int x,int y)
{
	for(int k=0;k<8;k++)
	{
		int nx=x+dx[k];
		int ny=y+dy[k];
		if(nx>=0&&nx<3&&ny>=0&&ny<4&&g[nx][ny]==1)
		{
			if(grid[nx][ny]!=-1&&(abs(grid[nx][ny]-grid[x][y])==1))
			{
				return false;
			}
		}
	}
	return true;
}

void dfs(int x)
{
	if(x==10)
	{
		ans++;
		return;
	}
	
	for(int i=0;i<3;i++)
	{
		for(int j=0;j<4;j++)
		{
			if(g[i][j]==1&&grid[i][j]==-1)
			{
				for(int num=0;num<=9;num++)
				{
					if(!used[num])
					{
						grid[i][j]=num;
						if(check(i,j))
						{
							used[num]=true;
							dfs(x+1);
							used[num]=false;
						}
						grid[i][j]=-1;
					}
				}
				return;
			}
		}
	}
}

int main()
{
	for(int i=0;i<3;i++)
	{
		for(int j=0;j<4;j++)
		{
			grid[i][j]=-1;
		}
	}
	dfs(0);
	cout<<ans<<endl;
	return 0;
} 

0四平方和 - 蓝桥云课

dfs枚举(选或者不选问题)

cpp 复制代码
#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;
const int N=5000010;
int n;
int cnt=0;
int m=0;
int path[5];
bool found=false; 

void dfs(int x,int sum,int start)
{
	if(found)return;
  if(sum>n)return;
	if(x>4)
	{
		if(sum==n)
		{
			for(int i=1;i<=4;i++)
			{
				cout<<path[i]<<' ';
				found=true;
			}
		}
		return; 
	}
	for(int i=start;i*i<=n;i++)
	{
		path[x]=i;
		dfs(x+1,sum+i*i,i);
		if(found)return;
	}
}

int main()
{
	cin>>n;
	dfs(1,0,0);
	return 0;
} 

0交换瓶子 - 蓝桥云课

贪心,从头开始遍历,当找到a[i]!=i的时候,就找i所在的位置然后进行交换

cpp 复制代码
#include<iostream>
using namespace std;

const int N = 10010;
int n;
int a[N];

int main()
{
    cin >> n;
    for(int i = 1; i <= n; i++) {
        cin >> a[i];
    }
    
    int ans = 0;
    
    // 贪心:直接把每个数放到正确位置
    for(int i = 1; i <= n; i++) {
        while(a[i] != i) {  // 如果当前位置的数不对
            swap(a[i], a[a[i]]);  // 把它和它应该在的位置交换
            ans++;
        }
    }
    
    cout << ans << endl;
    return 0;
}

0最大比例 - 蓝桥云课

直接找两个相邻的进行求解(但是会部分错误)

cpp 复制代码
#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;
const int N=110;

int n;
typedef long long ll;
ll x[N];

int gcd(int a,int b)
{
	return (b==0)?a:gcd(b,a%b);
}

int main()
{
	cin>>n;
	for(int i=1;i<=n;i++)
	{
		cin>>x[i];
	}
	int m=1;
	sort(x+1,x+1+n);
    for(int i=2;i<=n;i++)
    {
        if(x[i]!=x[m])
        {
            x[++m]=x[i];
        }
    }
	ll p=x[2]/gcd(x[2],x[1]);
	ll q=x[1]/gcd(x[2],x[1]);  
	cout<<p<<"/"<<q<<endl;
	return 0; 
} 
相关推荐
2301_800895103 小时前
第六届蓝桥杯b组省赛--备战蓝桥杯版h
蓝桥杯
List<String> error_P13 小时前
蓝桥杯最后几天冲刺:暴力大法(一)
算法·职场和发展·蓝桥杯
Tanecious.14 小时前
蓝桥杯备赛:Day6-B-小紫的劣势博弈 (牛客周赛 Round 85)
c++·蓝桥杯
迈巴赫车主14 小时前
蓝桥杯3500阶乘求和java
java·开发语言·数据结构·职场和发展·蓝桥杯
wljy114 小时前
第十三届蓝桥杯大赛软件赛省赛C/C++ 大学 B 组(个人见解,已完结)
c语言·c++·算法·蓝桥杯·stl
Tanecious.1 天前
蓝桥杯备赛:Day7- P10424 [蓝桥杯 2024 省 B] 好数
c++·蓝桥杯
List<String> error_P1 天前
蓝桥杯最后冲刺暴力(二)
职场和发展·蓝桥杯
yoyobravery1 天前
蓝桥杯第13届单片机(满分)
单片机·蓝桥杯
Tanecious.1 天前
蓝桥杯备赛:Day7- U535982 C-小梦的AB交换
c语言·c++·蓝桥杯