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