一个文件里有10万个随机正整数,按照以下规则能组合出一份新的数据
来源:互联网 发布:双十一淘宝女装排名 编辑:程序博客网 时间:2024/04/30 05:47
一个文件里有10万个随机正整数,按照以下规则能组合出一份新的数据:
A. 如果当前数字能被3整除,那么它和文件中所有数字(包括自己)两两相加后生成一组数字替代自己的位置。
B. 如果不能被3整除,则它只需要乘以二,生成一个数字替代自己的位置。
例如:[3,7,6] 会组合出[6,10,9,14,9,13,12]
再如:[5,12,9,6,2]会组合出[10,17,24,21,18,14,14,21,18,15,11,11,18,15,12,8,4]
写一个程序找出并打印出新数据的最小的前200个数字。请考虑优化算法复杂度。
void print(int *a, int len)
{
int i = 0;
for (; i < len; i++)
{
printf("%d ", a[i]);
}
printf("\n");
}
int * process(int *a, int len, int &k)
{
int i = 0;
int j = 0;
int *b = new int[len*len];
int *p = b;
for (; i < len; i++)
{
if (a[i] % 3 == 0)
{
for (j = 0; j < len; j++)
{
*(p+k) = a[i] + a[j];
k++;
}
}
else
{
*(p + k) = 2 * a[i];
k++;
}
}
for (i = 0; i < k; i++)
printf("%d ", b[i]);
printf("\n");
return b;
}
void adjust(int *a, int beg, int end)
{
int i;
int temp = a[beg];
for (i = 2 * beg+1; i <=end; i = 2 * i+1)
{
if (i < end && a[i] < a[i+1])
{
i++;
}
if (temp >= a[i])
{
break;
}
a[beg] = a[i];
beg = i;
}
a[beg] = temp;
}
void creatHead(int *a, int len)
{
int i;
for (i = (len-1) / 2; i >= 0; i--)
{
adjust(a, i, len - 1);
}
}
void sort(int *a, int len, int min)
{
int i;
int j;
for (i = min; i < len; i++)
{
if (a[0] > a[i])
{
a[0] = a[i];
}
adjust(a, 0, min - 1);
print(a, 5);
}
}
int main()
{
//int a[3] = { 3, 7, 6 };
//int num = 0;
//int *b = process(a, 3, num);
//creatHead(b, 4);
//print(b, 4);
//sort(b, num, 4);
//print(b, 4);
int a[5] = { 5, 12, 9, 6, 2 };
int num = 0;
int *b = process(a, 5, num);
creatHead(b, 5);
print(b, 5);
sort(b, num, 5);
print(b, 5);
}
- 一个文件里有10万个随机正整数,按照以下规则能组合出一份新的数据
- 题目:有一个桶,里面有白球、黑球各100个,人们必须按照以下的规则把球取出来:
- 题目:有一个桶,里面有白球、黑球各100个,人们必须按照以下的规则把球取出来
- 有一个桶,里面有白球、黑球各100个,人们必须按照以下的规则把球取出来:
- 输入一个矩阵,按照从外向里顺时针的顺序依次打印出每一个数字
- 导入文件必须严格按照以下规则
- 输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个
- java-51-输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。
- 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字
- C++输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,
- 剑指offer_输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字
- 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字
- java实现输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字
- 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,
- 数据由一个图层按照要素拆分多个文件或图层,俗称分解、扇出、拆分
- 有一个正整数N可以分解成若干个正整数之和,问如何分解能使这些数的乘积最大?
- 将一个字符串数组中的字母按照以下规则排列
- 一道Java相关的小程序题(一个无序数组里有99个不重复正整数,范围从......)
- 五子棋
- C++解析XML
- 怪呀,google无故不能使用竟然没有发布新闻,也没有人讨论,正常吗?
- linphone语音版移植
- AES For Delphi And Java, AES/ECB/PKCS5Padding(二)
- 一个文件里有10万个随机正整数,按照以下规则能组合出一份新的数据
- 迭代器模式
- 用况图设计
- CentOS下安装QT5
- 玲珑龟
- 黑马程序员_学Android 3G和java为什么选择黑马
- JAVA年度安全 第九周 X-FRAME-OPTIONS
- 类图设计
- 海林格距离决策树