 程序代码:
程序代码:/*思维过程:
其实,1-6元素和为21,三行和为30。
而对角元素重复算了2次,固对角元素和必定为30-21=9,中间3个元素和必定为21-9=12。
只需设两个变量就够了,剩下的变量可以用前两个变量的表达式来表示。
确认两个变量后只需判断所填的6个元素有没有重复以及有没有溢出取值范围就够了。
这题感觉循环嵌套比较多*/
#include<stdio.h>
int main()
{
    int line[6];
    int i,j,k,l;
    int result=0;
    printf("三角形圆圈编号1-6按逆(顺)时针:\n");
    printf("编号:        1    2    3    4    5    6\n\n");
    for (i=1;i<7;i++)
        for (j=1;j<7;j++)
        {
            line[0]=i;
            line[2]=j;
            line[4]=9-i-j;
            line[1]=10-i-j;
            line[3]=1+i;
            line[5]=1+j;
            for (k=1;k<7;k++)
                for (l=k+1;l<7;l++)
                    if (line[k-1]==line[l-1] || line[l-1]<1 || line[l-1]>6)
                        l=k=8;
            if (k==7)
            {
                printf("result%d: ",++result);
                for (k=0;k<6;k++)
                    printf("%5d",line[k]);
                printf("\n");
            }
        }
    printf("\n共有%d种填法。\n\n",result);
    return 0;
}[此贴子已经被作者于2016-11-5 01:37编辑过]
