腾讯面试题:根据上排给出十个数,在其下排填出对应的十个数,要求下排每个数都是先前上排那十个数在下排出现的次数
2014-03-17 22:33 带雪梅初暖 阅读(1266) 评论(0) 收藏 举报思路:
1、先初始化下排数组,使其值都为0。
2、初始化success状态为1,对上排数组进行遍历,获取每个值在下排数组出现的次数。
3、判断出现次数count,如果与下排数组对应值不相等,将count赋值给下排数组,并将success改为0。
4、判断success的值,为1退出整个循环,为0重复步骤2直至success的值为1。
用C写了下:
#define LEN 10
int arr[LEN] = {0,1,2,3,4,5,6,7,8,9};
int result[LEN] = {};
int getReulst();
int getFrequecy(int num);
int main(){
int k,i,success = 0;
while(success == 0){
success = getReulst();
}
for(i = 0; i < LEN; i++){
printf("%d,",result[i]);
}
scanf("%d", &k);
}
int getReulst(){
int i,num,frequecy;
int success = 1;
for(i = 0; i < LEN; i++){
num = arr[i];
frequecy = getFrequecy(num);
if(result[i] != frequecy){
result[i] = frequecy;
success = 0;
}
}
return success;
}
int getFrequecy(int num){
int i;
int count = 0;
for(i = 0; i < LEN; i++){
if(result[i] == num){
count++;
}
}
return count;
}