zoukankan      html  css  js  c++  java
  • 一个n数组求和问题

    这是我再水木社区看到的题目,然后自己思考了下。

    问题是这样的,现在有n个长度都为m的int数组, 每个数组可以有两种行为:原地不动,或者数组翻转。所谓数组翻转,就是a[i]=a[m-1-i],首尾颠倒。比如: [1,3,2,9]的翻转就是[9,2,3,1]。现我们将这n个翻转或者不翻转的数组的对应位置相加成一个新数组(sum[i]=a1[i]+a2[i]+...+an[i]),
    现找到最优解让sum数组的方差最小。

    1).用一个二维数组array[n][m]表示n个长度为m大小的数组,初始化数据。
    2).计算sum的平均值S_average = sum(array)/m,这求得sum[i]的平均值。
    3).定义一维数组exchange[n]用于标记第i是否翻转,再定义一个result[n]表示最后翻转的结果。
    4).定义count记录翻转的个数。
    5).定义两个数组OldValue[m],newValue[m]存储sum[i]的值,即每一列的值
    6).大概思路
      
      
    计算只翻转第一行,即array[1][m];
    得到OldValue=计算得到翻转count个后的值;
      
    for(count=1;count<=n;++count)
    {
        select(exchange);(排列组合,选择exchange中的count个行进行翻转)
        
        newValue=计算得到翻转count个后的值
      
        if(方差(newValue)<方差(OldValue))
        {
            OldValue =  newValue;
            
            get(result);  
      
         }
      
      }
      
      
      
    最后你需要的值在OldValue中,翻转了哪些行记录在result中,不知道这行不行啊

  • 相关阅读:
    JSON.parse()与JSON.stringify()的区别
    响应式布局
    document.selection
    jQuery $.proxy() 方法
    <转> 键值表
    jquery-jqzoom 插件 用例
    jquery 笔记
    前端表单验证常用的15个JS正则表达式<转>
    css 问题解决
    <转>break与continue
  • 原文地址:https://www.cnblogs.com/xiaoaiyi/p/3319230.html
Copyright © 2011-2022 走看看