给你10分钟时间,根据上排给出十个数,在其下排填出对应的十个数   
要求下排每个数都是先前上排那十个数在下排出现的次数。   
上排的十个数如下:   
【0,1,2,3,4,5,6,7,8,9】

举一个例子,   
数值: 0,1,2,3,4,5,6,7,8,9   
分配: 6,2,1,0,0,0,1,0,0,0   
0在下排出现了6次,1在下排出现了2次,   
2在下排出现了1次,3在下排出现了0次....   
以此类推..

我想的办法是,肯定不能全局遍历,但可以局部遍历,比如以0的个数先进行分类。

当0的个数小于并不包含5的时候,我们可以想象,数组b中所有元素的和的最小值是多少。

情况1:将这4个0分配给6,7,8,9,(或者是当数组a不连续的时候的最大的四个数,且b(4)=1,这里还剩下数组a中值为0,1,2,3,5的几个数字,根据

求和(a[i]*b[i])=10以及求和(b[i])=10,遍历9个相同球放进5个盒子并且没有空盒子的可能(40种),发现b数组的总和肯定大于10,所以不能实现。其实b[0]=0可以肯定,但这种情况下我们只依据数组b元素的和的可能值来评判。

情况2:当0的个数等于5的时候,b[5]=1,b[0]=5,剩余8个元素,有5个0,3个不等于0,且其和是4,遍历这168种可能。

情况3:当0的个数等于6的时候,b[0]=6,b[6]=1,剩余8个元素,有6个0,2个不等于0,且其和为3,遍历这56种可能。

情况4:当0的个数等于7的时候,b[0]=7,b[7]=1,剩余8个元素,有7个0,1个不等于0,且其和为2,遍历这8种可能。如此可解。

网上千篇一律的办法是:

给你10分钟时间,根据上排给出十个数,在其下排填出对应的十个数   
要求下排每个数都是先前上排那十个数在下排出现的次数。   
上排的十个数如下:   
【0,1,2,3,4,5,6,7,8,9】

举一个例子,   
数值: 0,1,2,3,4,5,6,7,8,9   
分配: 6,2,1,0,0,0,1,0,0,0   
0在下排出现了6次,1在下排出现了2次,   
2在下排出现了1次,3在下排出现了0次....   
以此类推..

解题思路:关键是理解“要求下排每个数都是先前上排那十个数在下排出现的次数”。

做以下分析:设总共有n个数,上排a[0...n-1],下排b[0...n-1],。

1)下排n个数的累加和为n,即b[0]+b[1]+...+b[n-1] = n

2)ai*bi的累加和也为n,即a[0]*b[0]+a[1]*b[1]+...+a[n-1]*b[n-1] = n

3)对于b中任意一个元素b[j], 都存在i,a[i] = b[j].

4)对于b中任意一个元素b[j],都有b[j] >= 0

5)如果a中存在负数。其在b中出现的次数一定为0. 如果a中数值大于n,则其出现次数也为0.

6)a中至少有两个非0数值在b中出现的次数非0

a:由1)n > n*b[i],其中b[i]为最小值,则a b中一定均有数值0,否则无解。设a[0] = 0,b[0]为a[0]在b中出现次数。

b:由于b中一定存在0,则0的出现次数一定大于0,因此b[0]>0 且b[0] < n,b[1...n-1]中至少一个值为0. 非0元素出现的次数一共是n-b[0].

c:有2)和6)对任意a[i],a[i]*b[i] < n,即b[i] < n/a[i],对所有a[i]>=n/2的元素中,在b中出现的次数必须最多只有1个出现次数不为0,且为1.其余出现次数均为0,即[1, n/2)范围内最多只有n/2-1个元素,故0出现的次数必不小于n/2, [n/2,n)范围内的元素必有一个出现次数为1。因此a数列中也必须有1,否则无解。

d:有c得在数值范围为(0,n/2)中(假设有x这样的数)出现的次数和s为n - b[0]或n-b[0]-1。其中1出现的次数至少为1(由c得)。又如果1出现的次数为1,则1出现的次数已经为2,故1出现的次数必大于1.设为x,则x出现的次数至少为1,而x>1,如果x出现的次数大于1,那么必须要有其他数出现的次数为x,这样无法收敛。故x出现的次数只能为1,1出现的次数只能为2.

另外:(感谢coolria提出)如果上排数列中无0,则下排数列全是0,是其唯一解。

结论:

1)如果上排数列中有0,此时如果上排数列中无0,1,2,n-4这四个数,则下排数列无解;否则下排数列中0出现的次数为n-4;1出现的次数为2;2出现的次数为1;n-4出现的次数为1;其余为0。

2)如果上排数列中无0,则下排数列全0,是其唯一解。



新方法-根据上排给出十个数,在其下排填出对应的十个数相关推荐

  1. 【编程题目】给你 10 分钟时间,根据上排给出十个数,在其下排填出对应的十个数...

    第 6 题(数组) 腾讯面试题: 给你 10 分钟时间,根据上排给出十个数,在其下排填出对应的十个数 要求下排每个数都是先前上排那十个数在下排出现的次数. 上排的十个数如下: [0,1,2,3,4,5 ...

  2. 面试题整理18 根据上排给出十个数,在其下排填出对应的十个数

     题目: 给你10分钟时间,根据上排给出十个数,在其下排填出对应的十个数   要求下排每个数都是先前上排那十个数在下排出现的次数.   上排的十个数如下:   [0,1,2,3,4,5,6,7,8 ...

  3. 腾讯面试题:根据上排给出的十个数,在其下排填出对应的十个数。

    版权所有.所有权利保留. 欢迎转载,转载时请注明出处: http://blog.csdn.net/xiaofei_it/article/details/17172769 根据上排给出的十个数,在其下排 ...

  4. 腾讯面试题,给你10分钟时间,根据上排给出十个数,在其下排填出对应的十个数

    题目: 给你10分钟时间,根据上排给出十个数,在其下排填出对应的十个数 要求下排每个数都是先前上排那十个数在下排出现的次数. 上排的十个数如下: [0,1,2,3,4,5,6,7,8,9] 举一个例子 ...

  5. 根据上排给出十个数,在其下排填出对应的十个数 要求下排每个数都是先前上排那十个数在下排出现的次数...

    如: 上排数组A:0,1,2,3,4,5,6,7,8,9 下排数组B:6,2,1,0,0,0,1,0,0,0 我比较无脑的记住了网上找的一个结论 0出现的次数为n-4,1出现的次数为2.2出现的次数为 ...

  6. 一个方法多个return_CVPR 2020(Oral) | 旷视提出CrowdDetection:密集场景检测新方法:一个候选框,多个预测结果...

    点击上方"CVer",选择加"星标"或"置顶" 重磅干货,第一时间送达 本文转载自:旷视研究院 本文是CVPR 2020论文系列解读第8篇. ...

  7. iOS中的UIAlertView之新方法(弹出警告框)

    2019独角兽企业重金招聘Python工程师标准>>> 新方法:iOS9.0以后用新方法 设置中间的弹出框 UIAlertController #import "ViewC ...

  8. 编制一个函数jsValue(),求出千位数上的数减百位数上的数减十位数上的数减个位数上的数大于零的个数cnt,再求出所有满足此条件的四位数的平均值pjz1,以及不满足此条件的四位数的平均值pzj2

    已知数据文件IN15.DAT中存有300个四位数,并已调用读函数readDat()把这些数存入数组a中,请编制一个函数jsValue(),其功能是:求出千位数上的数减百位数上的数减十位数上的数减个位数 ...

  9. 中科大郭光灿院士团队开发出量子门测试新方法

    (图片来源:网络) 量子科技是当前世界科技最前沿的领域之一,也是衡量一个国家科技水平的重要标志.从基础结构来看,量子计算机由多个量子门组成,且高保真度的量子门操作是实现容错量子计算的必要条件.因此,尽 ...

最新文章

  1. vs2015安装与单元测试以及经过优化的算法
  2. Neko does Maths
  3. JAVA反射系列之Method,java.lang.reflect.Method的使用
  4. springboot全局常量_Spring-Boot配置属性和环境变量的加载顺序
  5. 大学c语言项目,项目大学C语言程序设计期末复习重点.doc
  6. Java——集合经典面试题
  7. windowsterminal设置初始大小_这是我见过最全面的金蝶操作详解了,从初始化到财务使用全流程...
  8. 关于移植jSON编译时报错sbrkr.c:(.text+0xc): undefined reference to `_sbrk'处理
  9. 云存储应用是视频监控系统发展的必然需求
  10. 阿里巴巴《rocketmq开发指南》_如何看待阿里巴巴孤尽觉得Java是世界上最好的语言?...
  11. java线上诊断工具,Java线上诊断神器Arthas-1
  12. python pyd_python解析.pyd文件
  13. 17.看板方法——瓶颈和非即时可用资源笔记
  14. 当我们谈论深度学习时,我们在谈论什么?
  15. 14. Magento路由分发过程解析(二):Standard路由对象
  16. OpenCV-图像处理(18、Laplance算子)
  17. 汇率的思维导图模板下载方法
  18. 1.16. BIP39协议:使用助记词生成确定性钱包
  19. error: command ‘gcc‘ failed with exit status 1
  20. IEC 61970 标准系列简介

热门文章

  1. Androidz之clickable
  2. 【C语言简单说】三:整数变量和输出扩展(1)
  3. python数据结构教程_利用Python演示数型数据结构的教程
  4. 震撼世界的基建狂魔,中国制造的超级工程到底有多牛?
  5. 深度学习与机器学习到底什么关系?
  6. 82 个代码案例实践,带你学好 Python 机器学习
  7. office 高效办公智慧树_干货高效实用的office办公小技巧之word篇
  8. 华为交换机不同网段互访_华为S5700系列交换机使用高级ACL限制不同网段的用户互访...
  9. Java之jdk与jre的区别
  10. 高等学校计算机科学与技术教材:tcp/ip网络编程技术基础,TCP/IP网络编程技术基础...