IT公司100题-6-根据上排给出十个数,在其下排填出对应的十个数
问题描述:
要求下排每个数都是先前上排那十个数在下排出现的次数。
上排的十个数如下:
【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次….
以此类推..
下排数组B:0,1,2,3,4,5,6,7,8,9
从上牌数组Index = 0开始,A[0] = 0,0在下排数组中的个数为1,那么下排数组B此时就要更新为:1,1,2,3,4,5,6,7,8,9
// 6.cc
#include <iostream>
using namespace std;
#define MAX_LEN 10 class Object {
private:
int A[MAX_LEN];
int B[MAX_LEN];
bool m_success; public:
Object();
~Object() {} public:
int* get_B();
void set_next_B();
int get_frequency(int value);
}; Object::Object() {
m_success = false; // initiate A
for (int i = ; i < MAX_LEN; i++)
A[i] = B[i] = i;
} int* Object::get_B() {
int i = ;
while (!m_success) {
i++;
set_next_B();
} return B;
} // 设置B中的值
void Object::set_next_B() {
bool flag = true; for(int i = ; i < MAX_LEN; i++) {
int f = get_frequency(i);
if(B[i] != f) {
B[i] = f;
flag = false;
}
}
m_success = flag;
} // 统计value在B中出现的次数
int Object::get_frequency(int value) {
int count = ;
for(int i = ; i < MAX_LEN; i++) {
if(B[i] == value)
count++;
} return count;
} int main() {
Object obj;
int* res = obj.get_B(); for (int i = ; i < MAX_LEN; i++)
cout << i << " ";
cout << endl; for(int i = ; i < MAX_LEN; i++)
cout << res[i] << " ";
cout << endl; return ;
}
牛逼的解题思路:
转载自源代码
IT公司100题-6-根据上排给出十个数,在其下排填出对应的十个数的更多相关文章
- IT公司100题-35- 求一个矩阵中最大的二维矩阵(元素和最大)
问题描述: 求一个矩阵中最大的二维矩阵(元素和最大).如: 1 2 3 4 5 6 7 8 9 10 1 2 3 4 5 中最大的是: 4 5 9 10 分析: 2*2子数组的最大和.遍历求和,时 ...
- IT公司100题-32-交换元素,使数组差最小
问题描述: 有两个整数序列a, b,大小都为n, 序列元素的值任意整数,无序. 要求:通过交换a, b 中的元素,使得sum(a)-sum(b),差最小. 例如: var a=[80, 40, 60, ...
- IT公司100题-28-整数的二进制表示中1的个数
问题描述: 输入一个整数n,求n的二进制表示中,一共有多少个1.例如n=8,二进制表示为00001000,二进制表示中有1个1. 分析: 如果一个数n不为0,那么n-1的二进制表示,与n的二进 ...
- IT公司100题-27-跳台阶问题
问题描述: 一个台阶总共有n阶,一次可以跳1级或者2级.求总共有多少种跳法. 分析: 用f(n)表示n阶台阶总共有多少种跳法.n阶台阶,第一可以选择跳1阶或者2阶,则f(n) = f(n-1) + ...
- IT公司100题-tencent-打印所有高度为2的路径
问题描述: 打印所有到叶子节点长度为2的路径 10 / \ 6 16 / \ / \ 4 8 14 18 / \ / \ \ 2 5 12 15 20 / 11 ...
- IT公司100题-26-左旋转字符串
问题描述: 给定字符串和左旋的字符数,写程序实现字符串的左旋操作.例如对于字符串”12345678″, 左旋转4个字符后,变成”56781234″.要求时间复杂度为O(n),空间复杂度O(1). ...
- IT公司100题-25-求字符串中的最长数字串
问题描述: 实现一个函数,求出字符串中的连续最长数字串.例如输入”12345cbf3456″,输出”12345″. 函数原型为: void conti_num_max( const char * sr ...
- IT公司100题-21-输入n和m,和等于m
问题描述: 输入两个整数n 和m,从数列1,2,3,…,n 中随意取几个数, 使其和等于m,将所有可能的组合都打印出来. 分析: 利用递归的思路,对于1,2,3,…,n 中的任意一个数,要么选,要 ...
- IT公司100题-19-求Fibonacci数列
问题描述: 定义Fibonacci数列的定义如下: / 0 n=0f(n)= 1 ...
随机推荐
- (六)ARM状态寄存器-PSR
ARM程序状态寄存器Program State Register 在ARM模式中, 有16个数据寄存器和1或2个状态寄存器是可以随时访问的.在特权模式 (privileged mode) 下, 对应的 ...
- Android 自定义列表指示器
在联系人界面 可以看到这种界面 手指快速滑动右边滑动条时 可以显示相应的字母图标 android里提供了android.widget.SectionIndexer这个接口去实现该效果 可是只能显示字母 ...
- 有趣的JavaScript小程序
<!doctype html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- Linux系统的介绍
一.linux的特点: Linux是一个开源(源代码公开),免费的操作系统,其稳定性,安全性(也会有病毒,但因为linux是开源的,所以一旦有病毒就会有人去搞定它),处理多并发(月,NEC(日本电气股 ...
- HashMap详解
HashMap:http://www.cnblogs.com/xwdreamer/archive/2012/06/03/2532832.html ConcurrentHashMap:http://ww ...
- Intent 隐式跳转,向下一个活动传递数据,向上一个活动返回数据。
一.每个Intent只能指定一个action,多个Category. 使用隐式跳转,我们不仅可以跳转到自己程序内的活动,还可以启动其他程序的活动.使得Android多个程序之间的功能共享成为可能. 例 ...
- 关于MySQL大牛周振兴的博客
博客内容比较丰富 MySQL管理 数据恢复 linux TCP 个人生活感触 不过内容总体是笔记式的,更适合自己看,不适合初学者去follow.不过对MySQL比较熟悉的人,可以看看,作为扩展眼界的途 ...
- db:seed 更好的生成测试数据
make:model -m -> 在database/migrations/目录下生成的table表中设置表的字段名和字段类型->在app/目录下对应的模型文件中设置可添加字段 -> ...
- 3D正方体
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...
- onclick="test()"与onclick="return test()"的区别
浏览器会对页面元素的某些操作产生默认行为比如a标签跳转,form表单的提交等如果是onclick="test()"则执行该函数,然后继续自己的默认行为 <a href=&qu ...