/*=====================================================*\ 第6题(数组) 腾讯面试题: 给你10分钟时间,根据上排给出十个数,在其下排填出对应的十个数 要求下排每一个数都是先前上排那十个数在下排出现的次数。 上排的十个数以下: 【0,1,2,3,4,5,6,7,8,9】ios
举一个例子, 数值: 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次.... 以此类推.. \*=====================================================*/面试
#include <iostream> using namespace std; void print(int *a,int length){ for(int i = 0;i < length;++i){ cout << a[i] << " "; } cout << endl; } int scan(int *a,int *b,int length){ int key = 0; for (int index = 0 ; index < length ; ++index) { int sum = 0; for (int i = 0;i < length;++i) { if(b[i]==a[index]) ++sum; //第二行为对应第一行值的个数 } if (b[index]==sum) //若是此时至相等 { ++key; }else{ //不等则更新 b[index] = sum; } } cout<<key<<endl; return key; } int main(){ int a[10] = {0,1,2,3,4,5,6}; int b[10] = {0,0,0,0,0,0,0}; int length = 7; while(scan(a,b,length)!=length); print(a,length); print(b,length); return 0; }