正整数序列Q中的每个元素都至少能被正整数a和b中的一个整除,现给定a和b,如何生成Q中的前几项

思路分析:可以与归并排序联系起来,给定两个变量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 = 1;
    int j = 1;
    for (int k = 0; 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[6];
    int i;
    Generate(3, 5, 6, a);
    for (i = 0; i < sizeof(a) / sizeof(a[0]); i++)
        printf("%d ", a[i]);
    printf("\n");
    getchar();
    return 0;
}

    效果如图:

posted @ 2014-03-14 09:41  源子陌  Views(343)  Comments(0Edit  收藏  举报