欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

9.2.2将1到9数字分成三组,每组的三个数排成一个位数的完全平方数 每个数字有且只能用一次

程序员文章站 2024-02-01 19:09:58
...

1.必须先理解思路再去找BUG不然就是浪费时间。。。。。。。。。

/**
 * 先解决思路的问题:
 * 1.三位数100-999对应的某个值完全平方数
 * 2.值的范围为10 <m < 32
 * 3.怎么获取九位数的分成三组的各个数(采用求余数的方式)
 * 
 *
 * 先将每个数对应的平方值存一个数组中
 * 分别从数组中取出三个数,看三个数是不是9个不同的元素组成
 */
#include <stdio.h>
void main()
{
    int a[20], b[10];
    int i, j, k, m, n, t, h;
    for (j = 0, i = 11; i <= 31; ++i)
    {
        if (i % 10 != 0)
        {
            a[++j] = i * i;
        }
        printf("\n");
    }
    //一维数组中挑出3个不同数(排列组合也可以优化)
    for (k = 1; k <= j - 2; ++k)
    {
        for (m = k + 1; m <= j - 1; ++m)
        {
            for (n = m + 1; n <= j; ++n)
            {
                b[1] = a[k] / 100;
                b[2] = (a[k] / 10) % 10;
                b[3] = a[k] % 10;
                b[4] = a[m] / 100;
                b[5] = (a[m] / 10) % 10;
                b[6] = a[m] % 10;
                b[7] = a[n] / 100;
                b[8] = (a[n] / 10) % 10;
                b[9] = a[n] % 10;
                for (t = 1; t <= 8; t++)
                {

                    for (h = t + 1; h <= 9; ++h)
                    {

                        if (b[t] == b[h])
                        {
                            printf("===================%d%d\n", b[t], b[h]);
                            goto abc;
                            //  printf("======a=============%d%d\n",b[t],b[h]);
                        }
                    }
                }//需要判断当前数字不存在重复的数才能输出
                printf("result : %5d%5d%5d\n", a[k], a[m], a[n]);

                goto end;
            abc:;
            }
        }
    }
end:;
}