版权所有。所有权利保留。

欢迎转载,转载时请注明出处:

http://blog.csdn.net/xiaofei_it/article/details/17172769

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

上排的十个数如下:
0,1,2,3,4,5,6,7,8,9

答案是:

6,2,1,0,0,0,1,0,0,0

我在这里使用DFS,并且使用两个函数互相递归。

代码如下:

#include <iostream>
#define MAX 10
using namespace std;int a[MAX],su;void output()
{for (int i=0;i<MAX;i++)cout<<a[i]<<' ';cout<<endl;
}void alloc(int,int,int);
void go(int n)//尝试第n位
{if (n==MAX){output();return;}int have=0;for (int i=0;i<MAX;i++)if (a[i]==n) have++;int empty=0;for (int i=n;i<MAX;i++)if (a[i]==-1) empty++;int pos;for (pos=n+1;pos<MAX;pos++)if (a[pos]==-1) break;if (a[n]!=-1){if (empty<a[n]-have||a[n]<have)return;alloc(n,a[n]-have,pos);}else{for (a[n]=n>have?n:have;a[n]<=have+empty;a[n]++){if (a[n]!=n)alloc(n,a[n]-have,pos);else if (a[n]-1-have>=0)alloc(n,a[n]-1-have,pos);}a[n]=-1;}
}void alloc(int n,int quantity,int pos)//在pos位之后分配quantity个n
{if (quantity==0){go(n+1);return;}int empty=0;for (int i=pos+1;i<MAX;i++)if (a[i]==-1) empty++;int p;for (p=pos+1;p<MAX;p++)if (a[p]==-1) break;if (pos>=MAX) return;a[pos]=n;alloc(n,quantity-1,p);a[pos]=-1;if (empty>=quantity)alloc(n,quantity,p);
}int main()
{for (int i=0;i<MAX;i++) a[i]=-1;go(0);return 0;
}

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

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

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

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

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

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

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

  4. 新方法-根据上排给出十个数,在其下排填出对应的十个数

    给你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. 【转】IT名企面试:腾讯笔试题(2)

    摘要:想要进入腾讯公司,面试笔试题是一定要有所准备的.那么这里我们总结了一些腾讯笔试题,例如:const的含义及实现机制等问题. 腾讯是国内数一数二的IT企业了.那么每年想要进入腾讯公司的应聘者也是络 ...

  7. 程序员求助:腾讯面试题,64匹马8个跑道,多少轮选出最快的四匹

    昨天,有网友私信我,说去阿里面试,彻底的被打击到了.问了为什么网上大量使用ThreadLocal的源码都会加上private static?他被难住了,因为他从来都没有考虑过这个问题.无独有偶,今天笔 ...

  8. java 2017腾讯面试题_腾讯2017刁难面试题,是不是大神就看你会做几题

    原标题:腾讯2017刁难面试题,是不是大神就看你会做几题 一.今日头条2017笔试题(决策问题) 现在有两堆石子,小今与小条玩游戏,2个人都足够聪明,两个人规定:每次每人只能从其中一堆中取走1个或2个 ...

  9. python编辑距离正则匹配_详解一道腾讯面试题:编辑距离

    原标题:详解一道腾讯面试题:编辑距离 来自公众号:labuladong 预计阅读时间:8 分钟 前几天在网上看到一份鹅场的面试题,算法部分大半是动态规划,最后一题就是写一个计算编辑距离的函数,今天就专 ...

最新文章

  1. php 爬虫去重,浅谈动态爬虫与去重(续)
  2. 运维利器-ClusterShell集群管理操作记录
  3. JBOSS优化--比较有用的生产环境配置
  4. ActiveMQ中Queue生产者
  5. 《算法竞赛入门经典》 例题 4-1 古老的密码(Ancient Cipher) UVa 1339
  6. linux上配置spark集群
  7. linux 15秒 搭建VSFTPD文件服务器
  8. tika提取pdf信息异常
  9. ISAKMP主模式分析二
  10. 计算几何模板(kuangbin)
  11. 国产手持式频谱分析仪中性价比最高
  12. 马悦凌:从初级护士到“民间奇医”[7]
  13. 最新行政区划代码下载
  14. 安装xDroid一直提示无法执行二进制文件:可执行文件格式错误,怎么办
  15. keil5生成bin文件和axf文件
  16. 手把手刷数据结构-3.手把手刷二叉树算法1
  17. matlab的解线性方程组
  18. electron 双击放大事件
  19. 13个适合上班时做的保健小动作
  20. 微信小程序父子页面间得数据传递(对象或者数组)

热门文章

  1. c语言字母x*,C语言-字母X图形
  2. pythonppt_python操作ppt下载
  3. Reeds-Shepp曲线学习笔记及相关思考
  4. 已解决Encountered error while trying to install package.wxPython
  5. C语言实现二叉树排序
  6. 怎样提高自己的工作饱和度
  7. 12.5.2 升12.5.3的补丁 linux下载,[2019.12.05] Kindle 阅读器固件升级至 5.12.3
  8. 科普达人丨一文看懂阿里云的秘密武器“神龙架构”
  9. android+模拟器断开,启动后模拟器自动断开连接
  10. 女神不理你?运行这10行代码Python,让女神爱上你!