当前位置: 首页 > news >正文

2025年3月电子学会c++五级真题

结绳

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

int n,a[10010];



int main()
{
	
	cin>>n;
	for(int i = 0;i<n;i++)
	{
		cin>>a[i];
	}
	sort(a+0,a+n);//将a数组从小到大排序
	
	double sum = 0;
	for(int i = 0;i<n;i++)
	{
		sum = (sum+a[i])/2;
	}
	cout<<(int)sum;
	
	
	return 0;
}

最大乘积和

(思路:使用回溯算法(深搜DFS)) 

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

int a[100010],b[100010];
int ca[100010],cb[100010];
int n,m;
int ma;

void aaa(int);
int main()
{
	
	cin>>n;
	for(int i = 0;i<n;i++)
	{
		cin>>a[i];
	}
	cin>>m;
	for(int i = 0;i<m;i++)
	{
		cin>>b[i];
	}
	
	aaa(0);
	cout<<ma;
	
	return 0;
}
void aaa(int sum)
{
	ma = max(ma,sum);
	for(int i = 0;i<n;i++)
	{
		for(int j = 0;j<m;j++)
		{
			if(ca[i]==0&&cb[j]==0)
			{
				ca[i] = 1;
				cb[j] = 1;
				aaa(sum+a[i]*b[j]);
				ca[i] = 0;
				cb[j] = 0;
			}
		}
	}
	
}

从A到B

(思路:使用广度优先搜索算法BFS(广搜))

#include <bits/stdc++.h>
using namespace std;
struct node
{
	int x,v;
	bool f = true;
	node(){};
	node(int aa,int bb)
	{
		x = aa;
		v = bb;
	}
};
node que[200020];
int head,tail;

int f[200020];
int a,b,n;


int main()
{
	
	int t;
	cin>>t;
	while(t!=0)
	{
		head = 0;
		tail = 0;
		for(int i = 0;i<200020;i++)
		{
			f[i] = 0;
		}
		
		cin>>a>>b>>n;
		a += 100010;
		b += 100010;//两个“+100010”是为了加上负数(数轴上的数整体往右移100010个单位长度)
		que[++tail] = {a,0};
		f[a] = 1;
		bool ff = false;
		while(head<tail)
		{
			head++;
			for(int i = 0;i<3;i++)
			{
				int tx;
				if(i==0) tx = que[head].x+1;
				else if(i==1) tx = que[head].x-1;
				else tx = (que[head].x-100010)*n+100010;
				if(tx>=0&&tx<200020&&f[tx]==0)
				{
					f[tx] = 1;
					que[++tail] = {tx,que[head].v+1};
				}
				
				if(que[tail].x==b)
				{
					cout<<que[tail].v<<endl;
					ff = true;
					break;
				}
			}
			if(ff==true) break;
		}
		t--;
	}
	
	
	return 0;
}

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

int m,n,a[110],b[110];
int ff[110];
bool fff = false;

void aaa(int);

int main()
{
	
	cin>>m;
	for(int i = 0;i<m;i++)
	{
		if(i*(i-1)/2==m)
		{
			n = i;
			break;
		}
	}
	for(int i = 0;i<m;i++)
	{
		cin>>a[i];
	}
	sort(a+0,a+m);//将a数组从小到大排序
	
	b[0] = 0;//确定首个收费站的位置
	b[n-1] = a[m-1];//确定尾个收费站的位置
	
	aaa(1);
	
	return 0;
}
void aaa(int x)
{
	if(x==n-1)
	{
		int aa[110] = {0};
		int la = 0;
		for(int i = 0;i<n;i++)
		{
			for(int j = i+1;j<n;j++)
			{
				aa[la] = b[j]-b[i];
				la++;
			}
		}
		sort(aa+0,aa+la);//将aa数组从小到大排序
		bool f = true;
		for(int i = 0;i<m;i++)
		{
			if(a[i]!=aa[i])
			{
				f = false;
				break;
			}
		}
		if(f==true)
		{
			fff = true;
			for(int i = 0;i<n-1;i++)
			{
				cout<<b[i]<<" ";
			}
			cout<<b[n-1];
			return;
		}
		return;
	}
	
	for(int i = 0;i<n;i++)
	{
		int bb = b[x-1]+a[i];
		if(ff[bb]==0)
		{
			b[x] = bb;
			ff[bb] = 1;
			aaa(x+1);
			ff[bb] = 0;
		}
		if(fff==true) return;
	}
	
	return;
}

http://www.dtcms.com/a/98125.html

相关文章:

  • GOF23种设计模式
  • 树莓派5智能家居中控:HomeAssistant全配置指南
  • 笔记:基于环境语义的通感融合技术,将传统通信由“被动接收”转为“主动感知”
  • synchronized锁与lock锁的区别
  • 实变函数:集合与子集合一例(20250329)
  • JavaFX基础- Button 的基本使用
  • Linux进程管理之子进程的创建(fork函数)、子进程与线程的区别、fork函数的简单使用例子、子进程的典型应用场景
  • 【19期获取股票数据API接口】如何用Python、Java等五种主流语言实例演示获取股票行情api接口之沪深A股实时交易数据及接口API说明文档
  • 参加李继刚线下活动启发:未来提示词还会存在吗?
  • 【初阶数据结构】线性表之双链表
  • 【数电】半导体存储电路
  • 基于Linux平台安装部署Redis全教程
  • 生物化学笔记:医学免疫学原理09 白细胞分化抗原+黏附分子
  • Supplements of My Research Proposal: My Perspectives on the RAG
  • 数据结构:探秘AVL树
  • 【华为OD技术面试真题 - 技术面】- Java面试题(15)
  • Android开发中的数据结构与算法:排序算法
  • TCP协议与wireshark抓包分析
  • 如何封装一个上传文件组件
  • 小河:团队金牌精准计划
  • QML中使用Image显示图片和使用QQuickItem显示图片
  • 告别桌面杂乱与充电焦虑,移速165W百变桌面充电站首发体验
  • Day43 | 129. 求根节点到叶节点数字之和、1382. 将二叉搜索树变平衡、100. 相同的树
  • 循相似之迹:解锁协同过滤的核心推荐逻辑
  • OpenBMC:BmcWeb 生效路由4 将路由添加到Trie中
  • Spring Boot事务管理详解(附银行转账案例)
  • 如何缩短研发周期,降低研发成本?全星APQP软件为您提供解决方案
  • 【Goalng】第九弹-----文件操作、JSON处理
  • 杂草YOLO数据集分享
  • 【AI插件开发】Notepad++插件开发实践:从基础交互到ScintillaCall集成