极差问题:c++求解1-10的极差问题的初等解法

本文介绍了如何使用C++解决一个极差问题:从1到10的数列,通过特定操作(擦除两数并加入它们的乘积加1的值)最终得到单一数值,求这个过程中的最大值与最小值之差。通过对数列从小到大和从大到小排序,计算极差,并提供了源代码及结果。
摘要由CSDN通过智能技术生成

1.问题的描述

       在黑板上一共有1-10 共10 个数,,进行如下操作:每次擦去其中的两个数a和b,然后在数列中加入一个数a*b+1,如此下去直至黑板上只有一个数,在所按的操作方式得到的数当中,最大的为max,最小的为min,则该数列的极差定义为M=max-min;对于给定的数列: arr[] = { 1,6,5,9,8,4,3,7,2,10 };编程计算极差M。

2.问题的分析

      假设有5个数,分别为:1,4,3,2,5,如果首先先对这五个数进行从小到大的排序,即为:1,2,3,4,5,;合并前两个数是得到的数列是:3,3,4,5;一次类推,最后得到的是一个值,为211,如果对这5个数进行从大到小的排序,即为:5,4,3,2,1;然后进行如上相同的操作,最后得到的值为:130;所以可见当是从小到大的排序时,所求得的为最大值,反之则是最小值,而且最大值与最小值的求解过程都是类似的,以此类推也可得到求N个数的极差。

3.思路

       用一个数组arr[10]保存1-10这十个数,然后分别进行从小到大和从大到小的排序,接着根据分析中的操作分别求出最大值和最小值,最后即可求出1-10 的极差。

源代码如下:

#include "stdafx.h"
#include<algorithm>
#include<iostream>
using namespace std;

//从小到大
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值