思路分析:可以与归并排序联系起来,给定两个变量A、B,变量A轮着存放:a*1,a*2,a*3,……变量组B轮着存放:b*1,b*2,b*3,……有两个整数i、j,分别代表A、B第i、j次存放的值,每次取A、B中的较小值,并将较小值的次数加一,然后继续比较。
代码如下:
#include "stdafx.h"
#include<stdio.h>
void Generate(int a, int b, int N, int *Q)
{
int tmpA, tmpB;
int i = ;
int j = ;
for (int k = ; k < N; k++)
{
tmpA = a*i;
tmpB = b*j;
if (tmpA <= tmpB)
{
Q[k] = tmpA;
i++;
}
else
{
Q[k] = tmpB;
j++;
}
}
}
int main()
{
int a[];
int i;
Generate(, , , a);
for (i = ; i < sizeof(a) / sizeof(a[]); i++)
printf("%d ", a[i]);
printf("\n");
getchar();
return ;
}
效果如图: