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

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

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. vs发布免安装文件_戒掉PC,免pc开发,cloud ide and debug设想
  2. 企业级Python开发大佬利用网络爬虫技术实现自动发送天气预告邮件
  3. 653. Two Sum IV - Input is a BST
  4. java中挂起和恢复,应用程序“未能及时恢复”并挂起
  5. java shirofilter_Spring项目集成ShiroFilter简单实现权限管理
  6. 初学者python笔记(内置函数_1)
  7. [Oracle][Standby][PDB]在PDB中修改参数,设置范围为 SPFILE,报 ORA-65099错误
  8. C语言范例学习03-上
  9. 换服务器原网站数据会丢失吗,ecs服务器更换操作系统后原服务器数据还在吗?...
  10. Android小项目--2048小游戏,flutter人脸识别插件
  11. Asp.Net集成支付宝当面付接口报ISV权限不足
  12. 私域运营是不是就是社群运营?
  13. (软考高级、高项)信息系统项目管理师(第三版)过关经验
  14. 通俗易懂讲清502、503、504是什么
  15. 常见的python连接数据库包
  16. 最长回文子串Java
  17. MySQL分表后,如何做分页查询?
  18. 五家共井c语言,五家共井—最早的不定方程
  19. android圆形巡检动画,基于Android平台的工程项目现场巡检管理系统
  20. 深度学习模型移植的移动端框架

热门文章

  1. 关于深度学习人工智能模型的探讨(五)(7)
  2. [毕业设计]基于机器视觉的车辆速度检测与识别算法
  3. Python下载离线安装包
  4. “好不容易进的腾讯,你凭什么要离开?”
  5. win 10 强制禁用驱动程序签名
  6. 文献阅读笔记(1)JSSC-清华Sticker ai芯片
  7. 决策树剪枝的基本策略有预剪枝和后剪枝,请简述并分析两种剪枝策略
  8. 傅里叶(三):傅里叶变换的推导
  9. OpenID Connect详解
  10. 对称密码的集中式密钥分配协议(C语言)