博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
给你10分钟时间,根据上排给出十个数,在其下排填出对应的十个数
阅读量:4135 次
发布时间:2019-05-25

本文共 1164 字,大约阅读时间需要 3 分钟。

腾讯面试题:

给你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位置就不能为0,应该为10,因为有10个0,0变成了10,那么就剩下9个0了,所以0位置是9,9出现了,那9位置须为1,0的次数就变为了8,那9就没了,。。。。。。啊啊好烦

解题过程:

1、上一排的位置数组为pre={0,1,2,3,4,5,6,7,8,9},下一排数组nxt先赋值为0

2、遍历pre数组,pre[0]=0,从nxt数组中找出0出现的次数10,因为nxt[0]为0而不为10,所以此位置不对,先将10==nxt[0],

pre[1]=1,从nxt数组中找出1出现的次数0,因为nxt[1]为0等于0,所以此位置不动,继续。。。。。

遍历玩pre数组后,nxt={10,0,0,0,0,0,0,0,0,0}

3、循环2,知道所有位置的元素都一一对应结束,详细过程如下:

(1)从nxt找出0出现的次数为9,因nxt[0]=10,所以nxt[0]=9,nxt[9]=1,此时nxt={9,0,0,0,0,0,0,0,1}

(2)找出0出现的次数8,变动的数组为nxt[0]=8,nxt[1]=1,nxt[8]=1,因为nxt[9]=1不为0,所以nxt[9]=0,此时nxt={8,1,0,0,0,0,0,0,1,0}

(3)变动的数组为nxt[0]=7,nxt[1]=2,nxt[2]=1,nxt[7]=1,nxt[8]=0nxt={7,2,1,0,0,0,0,1,0,0}

(4)变动的数组为nxt[0]=6,nxt[6]=1,nxt[7]=0,nxt={6,2,1,0,0,0,1,0,0,0}

(5)检测到所有元素位置已就绪,退出循环

#include "iostream"  #include 
#include
using namespace std;#define LEN 10int pre[LEN]={0,1,2,3,4,5,6,7,8,9};//上一排的数int nxt[LEN]={0};//下一排的数//某数在下一排出现的次数int getCount(int k) { int cnt=0; for(int i=0;i

转载地址:http://advvi.baihongyu.com/

你可能感兴趣的文章