蓝桥杯试题解析(一)。
有N个正整数,现对N个正整数进行不同方式的排列,每次排列后都会按照以下规则进行一次计算:
·计算规则:第一次:第一个数乘以第二个数乘以第三个数,结果记录为M(1);第二次:第二个数乘以第三个数乘以第四个数,结果记录为M(2);第三次:第三个数乘以第四个数乘以第五个数,结果记录为M(3);
·最后计算M(1)+M(2)+M(3)....(N-2)的数值。
聪明的小蓝发现排列方式不同,最后计算出的结果也不相同。请找出一种排列方式使这个数值最大。例如:N=4,4个正整数分别为1、2、3、4,那么排列方式就会有24种,其中排列方式为1、3、4、2时,按照规则计算2次:1乘3乘4等于12,3乘4乘2等于24,乘积相加12加24等于36。这种排序方式是所有乘积相加的数值最大,为36。
·输入描述:输入N个正整数(3≤N),正整数之间一个英文逗号分开。
·输出描述:找出所有乘积相加的数值最大的排列方式,并输出数值。
·输入示例:1、2、3、4,输出示例:36。
分析:怎样排列n个数字可以使得计算结果最大?让较大的数字尽可能多地参与计算。例如:有五个数,按照以下顺序排列:
·第一次计算:a、b、c、d、e。
·第二次计算:b、c、d。
·第三次计算:c、d、e。
·参与次数:1、2、3、2、1。
由此可以得出结论:需要把较大的数字放中间。
编程思路:
·1、创建一个列表,保存输入的N个数字,将存入的元素转换成整型;
·2、将列表中的元素按照降序(从大到小)排列;
·3、创建一个新的列表;
·4、首先加入最大的数字。锁引零五,依次加入剩下的温温一个数字,并按照规则击数锁引插入最左边,搂数锁引插入最右边,就像给最大的数字穿衣服一样,左边一件,然后右边一件,始终保持大的数字在中间。
例如一组数字(1,2,3,4,5),创建列表a,并按照从大到小排列,a=[5,4,3,2,1],创建新的列表b=[],先加入索引0的最大数,b=[5],然后加入索引1的数字到左边,b=[4,5],再加入索引2的数字到最右边,b=[4,5,3],依次加入b=[2,4,5,3,1],按照规则依次计算并相加。
完整代码。