写正确函数需要注意的地方:两个序列a,b,大小都为n,序列元素的值为任意整数,无序;要求通过交换a,b中的元素,使序列a元素的和与序列b元素的和之间的差最小

有两个数组a,b,大小都为n,数组元素的值任意,无序 有两个数组a,b,大小都为n,数组元素的值任意,无序 //要求:通过交换a,b中的元素,使数组a的元素之和与数组b的元素之和之间//的差最小? 立即下载
int sum(int* arr, int count)
{
	int sum=0;
	for(int i=0;i<count;++i)
		sum+=arr[i];
	return sum;
}

int MinArrayDis(int* a, int* b, int count)
{
	if(a==NULL || b==NULL || count<=0)
		return -1;
	bool have=false;

	while(true)
	{
		int suma=sum(a,count);
		int sumb=sum(b,count);
		int sub=suma-sumb;
		int i=0;
		int j=0;

		for(i=0; i<count; ++i)
		{
			for(j=0; j<count; ++j)
			{
				int subij=a[i]-b[j];
				if(subij*sub>0 && abs(subij)<abs(sub))
				{
					have=true;
					break;
				}
			}
			if(have)//如果已经存在则跳出
				break;
		}

		if(have)
		{
			int temp=a[i];
			a[i]=b[j];
			b[j]=temp;
		}
		else
			break;
		have=false;//还原have的值
	}
	return sum(a,count)-sum(b,count);
}

int _tmain(int argc, _TCHAR* argv[])
{
	int push[6]={100,99,98,1,2,3};
	int pop[6]={1,2,3,4,5,40};
	copy(push,push+6,ostream_iterator<int>(cout," "));
	cout<<endl;
	copy(pop,pop+6,ostream_iterator<int>(cout," "));
	cout<<endl;

	cout<<arraydis(push,pop,6)<<endl;

	copy(push,push+6,ostream_iterator<int>(cout," "));
	cout<<endl;
	copy(pop,pop+6,ostream_iterator<int>(cout," "));
	cout<<endl;

	getchar();
	return 0;
}

这个算法不能保证获得最优解。


还有一种方法为遍历所有C(2n,n)的组合。找出小于等于sum/2的n个数相加最大值。

int maxsum=0;
void Divide_Recu(int* a, int count, bool* assis, int curindx, int curcount, int sum, int cursum)
{
	if(curcount==count/2 && cursum<=sum/2)
	{
		if(cursum>maxsum)
		{
			maxsum=cursum;
			for(int i=0;i<count;++i)
			{
				if(assis[i]==true)
					cout<<a[i]<<" ";
			}
			cout<<endl;
		}
	}

	if(curcount<count/2 && cursum<sum/2 && curindx<count)
	{
		assis[curindx]=false;
		Divide_Recu(a,count,assis,curindx+1,curcount,sum,cursum);
		assis[curindx]=true;
		Divide_Recu(a,count,assis,curindx+1,curcount+1,sum,cursum+a[curindx]);
		assis[curindx]=false;
	}
	else
		return;
}

int Divide(int* a, int count)
{
	if(a==NULL || count<0 || count%2==1)
		return -1;
	if(count==0)
		return 0;

	maxsum=0;
	bool* assis=new bool[count];
	memset(assis, 0, sizeof(bool)*count);
	Divide_Recu(a, count,assis,0, 0, sum(a, count), 0);
	delete []assis;
}

	int temp[14]={100,99,98,1,2,3,1,2,3,4,5,40,12,25};
	Divide(temp,14);


大模型微调框架之TRL 近年来,大语言模型(LLMs)的快速发展推动了下游应用的繁荣,但如何高效地对这些模型进行对齐和微调,依然是研究与应用的热点。Hugging Face 开源的 TRL(Transformer Reinforcement Learning) 框架,提供了基于强化学习的语言模型训练方法,并支持 SFT(监督微调)、PPO(近端策略优化)、DPO(直接偏好优化)等多种方式,是目前对齐和微调 LLM 的重要工具。 阅读详情

相关推荐

期权定价模型系列[11]三叉树期权定价[trinomial model ]

三叉树期权定价方法简介

xiaowu1997的博客 1847

有两个数组a,b,大小都为n,;通过交换a,b中的元素,使sum(a)-sum(b)最小。

有两个数组a,b,大小都为n,数组元素的值任意整形数,无序; 要求:通过交换a,b中的元素,使数组a元素的和与数组b元素的和之间的差最小。 当前数组a和数组b的和之差为 A = sum(a) - sum(b) a的第i个元素和b的第j个元素交换后,a和b的和之差为 A' = sum(a) - a[i] + b[j] - (sum(b) - b[j] + a[i...

weixin_30667301的博客 240

灵魂三问:因果推断

什么是因果推断?为什么研究因果推断?怎么进行因果推断研究?

ML OR 智能决策的博客 2902

有两个数组a,b,大小都为n;通过交换a,b中的元素,使sum(a)-sum(b)最小。

今天在浏览网页的时候,发现了一个叫做 华为面试题(8分钟写出代码) 的链接,不确定真实性,纯属好奇,就点进去看看 这个可能是很老的题目吧,因为我看到这题目时,底下有好多评论了.提到XX排序,内存占用,等等词汇 小丑是新人,也想用自己的方法解一下题目,如有雷同,纯属巧合 解: (1) 有前辈在解题时用到排序,但我认为没有必要,排序后的sum(a) - sum(b), 与任意杂乱顺...

dingmuti4844的博客 264

esp32s3 spi camera gc6133调试

gc6133 spi只有master模式,同时需要esp32提供主时钟,需要有主时钟然后才能通过i2c进行初始化.测试了几种方式,记录如下。

hclydao的专栏 1563

MyEclipse 2017 CI 10安装与激活

本文介绍MyEclipse 2017 CI 7、CI 8、CI 9和CI 10的安装与激活。此方法理论上应该能激活MyEclipse 2017 CI所有系列,即激活方法是通用的,只是激活文件略有不同。本文提供MyEclipse 2017 CI 7、CI 8、CI 9和CI 10的激活文件。说明:博主所提供的压缩包格式均为RAR5,即WinRAR 5.0以上的版本才能正常解压,别的压缩软件博主不太清...

weixin_42539046的博客 9416

有两个序列a,b,大小都为n,序列元素的值任意整数,无序;要求:通过交换a,b中的元素,使[序列a元素的和]与[序列b元素的和]之间的差最小。

/** * 有两个序列a,b,大小都为n,序列元素的值任意整数,无序;要求:通过交换a,b中的元素,使[序列a元素的和]与[序列b元素的和]之间的差最小。 * a=[100 ,99 ,98 ,1 ,2 ,3]; b=[1, 2, 3, 4, 5, 40];结果为48 * @param * @return */ public class main { public static void main(String[] args) { int[] a = {1.

liumin852的博客 196

高效搭建微信公众号爬虫全流程

微信公众号爬虫系统成功完成功能测试验证。该系统具备完整的数据采集与管理能力,支持多公众号内容爬取、数据存储与统计分析。通过命令行界面可执行爬取操作(如量子位、新智元等公众号),查看最新文章列表和系统统计信息。测试显示SQLite数据库正常存储数据,所有核心功能(多源支持、文章检索、数据统计)均运行良好。系统采用模块化设计,扩展性强,为后续接入真实API或网页爬取奠定了坚实基础,是AI内容聚合的优质开发平台。🎉

weixin_44975687的博客 1553

有两个数组a,b,大小都为n,数组元素的值任意,无序;要求:通过交换a,b中的元素,使数组a元素的和与数组b元素的和之间的差最小

public static void main(String[] args) { method(5); } /** * 有两个数组a,b,大小都为n,数组元素的值任意,无序;要求:通过交换a,b中的元素,使数组a元素的和与数组b元素的和之间的差最小 * 思路 * 1.算a b 之间的差值 differ * 2. 找出 a b 数组中差值最接近differ/2 的元素

sessionsong的专栏 4317

大数据架构中的数据治理:元数据管理与数据血缘追踪实践

本文将聚焦大数据架构中数据治理的两大核心支柱——元数据管理与数据血缘追踪元数据管理的目标、类型与实施步骤(从需求分析到工具落地);数据血缘追踪的技术实现(静态解析、动态捕获、混合方案)与应用场景;如何将两者结合,构建完整的数据治理体系,并通过真实案例展示落地效果。元数据管理:定义了业务/技术/操作元数据,讲解了工具选型(如Apache Atlas)、采集(Hook/API)、存储(关系库+图数据库)、应用(数据发现、质量监控);数据血缘追踪。

欢迎来到我的优快云空间!这里聚焦AI大模型应用实战,分享前沿技术、实战案例与开发经验。 867

FastGPT智能体开发:FastGPT OpenAPI 知识库接口

FastGPT OpenAPI 知识库接口

王国平的博客 323

《数组-规划》 有两个序列a,b,大小都为n,序列元素的值任意整数,无序;要求:通过交换a,b中的元素,使[序列a元素的和]与[序列b元素的和]之间的差最小

一,题目:有两个序列a,b,大小都为n,序列元素的值任意整数,无序;要求:通过交换a,b中的元素,使[序列a元素的和]与[序列b元素的和]之间的差最小。       例如:                  var   a=[100 ,99 ,98 ,1 ,2 ,3];       var  b=[1, 2, 3, 4, 5, 40];       有两个序列a,b,大小都为n,序列元素的值

王路路-nlp 3199

国科大学习资料--计算机视觉--期末考试解析

国科大学习资料–计算机视觉(胡占义)–期末考试解析 ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ;

无名何许人的博客 2464

有两个序列a,b,大小都为n,序列元素的值时任意型整数,无序:要求交换a,b中的元素,是序列a元素的和与序列b元素的和之间的差最小。

问题阐述: 1.有两个序列a,b,大小都为n,序列元素的值时任意型整数,无序:要求交换a,b中的元素,是序列a元素的和与序列b元素的和之间的差最小。 问题分析: 1.经过很长时间的思考,并通过浏览各路大神的分析,本小白最终锁定此问题是背包问题。 2.将两个列表合成一个列表命名为c,所有元素求和得到sum,最终得到的两个列表为deal_a 和deal_b 搞成背包问题,看看有几个约束 1.差值最小,我们可以预测到,最终得到的两个数组一定在sum/2 的周围, 可以假设deal_a<=sum/2 和dea

小菜鸟sha的博客 701

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

有两个序列a,b,大小都为n,序列元素的值任意整数,无序

有两个序列a,b,大小都为n,序列元素的值任意整数,无序; 要求:通过交换a,b中的元素,使[序列a元素的和]与[序列b元素的和]之间的差最小。 例如:  var a=[100,99,98,1,2, 3]; var b=[1, 2, 3, 4,5,40]; 思路 设delta = Sum(a) - Sum(b) 现在交换a中的i和b中的j,则S

Emmmwzh 961

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

9:交换最小值和最大值

9:交换最小值和最大值 本题要求编写程序,先将输入的一系列整数中的最小值与第一个数交换,然后将最大值与最后一个数交换,最后输出交换后的序列。 注意:题目保证最大和最小值都是唯一的。 输入格式: 输入在第一行中给出一个正整数N(≤10),第二行给出N个整数,数字间以空格分隔。 输出格式: 在一行中顺序输出交换后的序列,每个整数后跟一个空格。 输入样例: 5 8 2 5 1 4 输出样例: 1 2 5...

weixin_46640830的博客 3144

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

调整数组使差最小 (01背包问题变形)(一个数组分成同大小部分或一个数组分成不同大小两部分)

最近看到两道背包问题变形的题目,形式很相似,做个总结。 01背包问题:在n个物体中向容量为V的背包中放,第i个物体的体积为C[i],其价值为W[i],如何选取使得背包中的物体总价值最大。(注意i是从1开始) 问题1:将数组分为两部分,不要求两部分元素个数一致,使得两部分的和最接近,返回两部分的差值。例如: int[] array={1,0,1,7,2,4},分为两部分为{1,0,1,2...

zzpzm的博客 1919

实验7-1-10 交换最小值和最大值 (15 分)

实验7-1-10 交换最小值和最大值 (15 分) 本题要求编写程序,先将输入的一系列整数中的最小值与第一个数交换,然后将最大值与最后一个数交换,最后输出交换后的序列。 注意:题目保证最大和最小值都是唯一的。 输入格式: 输入在第一行中给出一个正整数N(≤10),第二行给出N个整数,数字间以空格分隔。 输出格式: 在一行中顺序输出交换后的序列,每个整数后跟一个空格。 输入样例: 5 ...

年少轻狂特么的理想的博客 1万+

本题要求编写程序,先将输入的一系列整数中的最小值与第一个数交换,然后将最大值与最后一个数交换,最后输出交换后的序列。注意:题目保证最大和最小值都是唯一的。

本题要求编写程序,先将输入的一系列整数中的最小值与第一个数交换,然后将最大值与最后一个数交换,最后输出交换后的序列。注意:题目保证最大和最小值都是唯一的。

2401_83549119的博客 487

7-5 交换最小值和最大值 (10 分)

本题要求编写程序,先将输入的一系列整数中的最小值与第一个数交换,然后将最大值与最后一个数交换,最后输出交换后的序列。 注意:题目保证最大和最小值都是唯一的。 输入格式: 输入在第一行中给出一个正整数N(≤10),第二行给出N个整数,数字间以空格分隔。 输出格式: 在一行中顺序输出交换后的序列,每个整数后跟一个空格。 输入样例: 5 8 2 5 1 4 输出样例: 1 2 5 4 8 #include<stdio.h> int main() { int n,i,

Ashes881502的博客 2150

用回溯法(backtracking)解决平衡集合问题(一道微软公司面试题)

(原题出自微软公司面试题)问题如下:有两个序列a,b,大小都为n,序列元素的值任意整数,无序; 要求:通过交换a,b中的元素,使[序列a元素的和]与[序列b元素的和]之间的差最小。 例如:   var a=[100,99,98,1,2, 3]; var b=[1, 2, 3, 4,5,40];分析:通过交换的方式,最终的状态是在保证两个序列中元素个数相同的条件下,任何一个元素都可以位于两个序列中的任何一个。这样问题可以转化为:在一个长度为2*n的整数序列中,如何将元素个数分成两个子集,记每个子集的

ljsspace的专栏 8241

平衡集合

http://blog.youkuaiyun.com/v_JULY_v/article/details/6126444的第32题 有两个序列a,b,大小都为n,序列元素的值任意整数,无序; 要求:通过交换a,b中的元素,使[序列a元素的和]与[序列b元素的和]之间的差最小。 例如: var a=[100,99,98,1,2, 3]; var b=[1, 2, 3, 4,5,40]; 上面

chivalry 1600

【动态规划】801. 使序列递增的最小交换次数(每日一题)

动态规划 算法思路分享

m0_52309496的博客 235

排序,求几个最值问题,输入n个整数,输出其中最小的k个元素。

看完两个求最大值算法之后的一些感想。 如果想直接看算法的可以跳过。但是我觉得我这些想法还是比较有用的,至少对我将来的算法设计是这样的。 算法的功能越强大,必然意味着速度慢,因为根据丛林法则,那种慢又功能少的算法会被淘汰。 所以,(注意了!!),如果我们在使用一个算法的时候感觉到它造成的结果满足我们的使用,而且超出了,我们的使用,那么我们就很可能浪费了时间,降低了效率。 例如这个1000个数...

weixin_30791095的博客 409

交换瓶子题解密:用环分解替代排序的O(n)算法

置换环是算法竞赛中一类基础而关键的图论结构,源于对称群中轮换分解的数学原理。其核心在于将数组元素的位置映射建模为有向图,自动形成若干不相交的环,每个长度为k的环仅需k−1次交换即可归位。该方法时间复杂度稳定为O(n),远优于任何排序或搜索策略,具备强可扩展性与工程鲁棒性。典型应用场景包括蓝桥杯‘交换瓶子’、基环树判环、约瑟夫问题坐标映射等。掌握环识别与计数,是突破贪心适用边界、理解置换群结构的关键能力。

weixin_34357887的博客 407

java给出两个整数ab求和,如何在C#中求和一个整数数组

基础类 常见十大算法 优劣术语稳定性 原本a在b前,a=b,排序之后位置任然不变。不稳定性则相反内排序 所有排序都在内存中完成。外排序数据放磁盘,排序通过磁盘内存的数据传输事件复杂度 算法执行耗费的时间 空间复杂度 算法执行耗费的内存 In/out-place: 不占/占额外内存 冒泡排序: 选择排序: 插入排序: 希尔排序: 归并排序: 快速排序: 堆排序: 计数排序: 桶排序: 基数排序: ...

weixin_28756347的博客 414
上一篇: 写正确函数需要注意的地方:在字符串中找出连续最长的数字串,并把这个串的长度返回
下一篇: 海量数据查询优化(精)
chjjunking
博客等级 码龄17年 103粉丝 102原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值