程序代码:/*思维过程:
其实,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编辑过]
