免費論壇 繁體 | 簡體
Sclub交友聊天~加入聊天室當版主
分享
返回列表 发帖

[组合] 填数字游戏(四年级奥数)

本帖最后由 realnumber 于 2016-11-26 08:39 编辑

如图,1,2,3,...,填入以下12个交点,使得6条边上的四个数和相等.已用程序算出结果.
QQ截图20161126082713.png
2016-11-26 08:32



free pascal2.4.0程序如下,依次沿外面边界的点,取变量a1,a2,...,a11,以及常量12,其中a1是某正三角形顶点.
var
   a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11 : integer;
   b:integer;
begin
for a1:=1 to 11 do
   begin
   for a2:=1 to 11 do
        begin
        if a2=a1 then continue;
        for a3:=1 to 11 do
            begin
            if a3=a1 then continue;
            if a3=a2 then continue;
            for a4:=1 to 11 do
              begin
              if a4=a1 then continue;
              if a4=a2 then continue;
              if a4=a3 then continue;
              for a5:=1 to 11 do
                begin
                  if a5=a1 then continue;
                  if a5=a2 then continue;
                  if a5=a3 then continue;
                  if a5=a4 then continue;
                  if a1+a2+a4+a5<>26 then continue;
                  for a6:=1 to 11 do
                    begin
                    if a6=a1 then continue;
                    if a6=a2 then continue;
                    if a6=a3 then continue;
                    if a6=a4 then continue;
                    if a6=a5 then continue;
                    for a7:=1 to 11 do
                      begin
                      if a7=a1 then continue;
                      if a7=a2 then continue;
                      if a7=a3 then continue;
                      if a7=a4 then continue;
                      if a7=a5 then continue;
                      if a7=a6 then continue;
                      if a3+a4+a6+a7<>26 then continue;
                      for a8:=1 to 11 do
                        begin
                        if a8=a1 then continue;
                        if a8=a2 then continue;
                        if a8=a3 then continue;
                        if a8=a4 then continue;
                        if a8=a5 then continue;
                        if a8=a6 then continue;
                        if a8=a7 then continue;
                        for a9:=1 to 11 do
                           begin
                           if a9=a1 then continue;
                           if a9=a2 then continue;
                           if a9=a3 then continue;
                           if a9=a4 then continue;
                           if a9=a5 then continue;
                           if a9=a6 then continue;
                           if a9=a7 then continue;
                           if a9=a8 then continue;
                           if a5+a6+a8+a9<>26 then continue;
                           for a10:=1 to 11 do
                              begin
                              if a10=a1 then continue;
                              if a10=a2 then continue;
                              if a10=a3 then continue;
                              if a10=a4 then continue;
                              if a10=a5 then continue;
                              if a10=a6 then continue;
                              if a10=a7 then continue;
                              if a10=a8 then continue;
                              if a10=a9 then continue;
                              a11:=66-a1-a2-a3-a4-a5-a6-a7-a8-a9-a10;
                              if a7+a8+a10+a11<>26 then continue;
                              if a3+a2+a11+12<>26 then continue;
                              if a1+a9+a10+12<>26 then continue;
                             write(a1,' ',a2,' ',a3,' ',a4,' ',a5,' ',a6,' ');
                             write(a7,' ',a8, ' ',a9,' ',a10,' ',a11,' ');
                             writeln;
                             end;
                           end;
                        end;
                      end;
                    end;
                end;
              end;
            end;
        end;
   end;

end.
分享到: QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友

1 4 2 10 11 5 9 3 7 6 8
1 4 7 11 10 2 6 9 5 8 3
1 5 7 9 11 4 6 8 3 10 2
1 6 3 11 8 2 10 7 9 4 5
1 6 5 10 9 7 4 8 2 11 3
1 7 2 10 8 3 11 6 9 4 5
1 7 3 8 10 9 6 5 2 11 4
1 8 4 6 11 7 9 5 3 10 2
1 9 2 6 10 7 11 4 5 8 3
1 9 3 11 5 4 8 10 7 6 2
2 3 5 11 10 1 9 7 8 4 6
2 5 6 9 10 7 4 8 1 11 3
2 6 1 10 8 4 11 5 9 3 7
2 6 5 11 7 1 9 10 8 4 3
2 6 7 10 8 4 5 11 3 9 1
2 7 3 8 9 10 5 6 1 11 4
2 8 1 10 6 4 11 7 9 3 5
2 10 3 5 9 7 11 6 4 8 1
2 10 3 8 6 4 11 9 7 5 1
3 2 8 10 11 1 7 9 5 6 4
3 4 1 8 11 7 10 2 6 5 9
3 4 8 10 9 1 7 11 5 6 2
3 5 1 11 7 4 10 6 9 2 8
3 7 1 11 5 4 10 8 9 2 6
3 8 2 6 9 11 7 5 1 10 4
3 8 5 4 11 7 10 6 2 9 1
3 8 5 9 6 2 10 11 7 4 1
3 11 1 8 4 7 10 9 6 5 2
3 11 2 8 4 7 9 10 5 6 1
4 1 5 10 11 2 9 6 7 3 8
4 1 7 11 10 5 3 9 2 8 6
4 3 5 9 10 1 11 7 8 2 6
4 3 6 11 8 7 2 10 1 9 5
4 5 1 6 11 10 9 2 3 7 8
4 5 2 11 6 3 10 8 9 1 7
4 5 3 10 7 2 11 8 9 1 6
4 6 5 9 7 1 11 10 8 2 3
4 7 1 5 10 11 9 3 2 8 6
4 10 1 5 7 11 9 6 2 8 3
4 11 1 6 5 10 9 8 3 7 2
4 11 2 5 6 9 10 8 3 7 1
5 1 3 11 9 4 8 6 7 2 10
5 2 1 10 9 7 8 4 6 3 11
5 3 9 7 11 4 6 10 1 8 2
5 4 3 11 6 10 2 9 1 8 7
5 4 9 6 11 3 8 10 2 7 1
5 4 9 7 10 2 8 11 3 6 1
5 9 1 10 2 7 8 11 6 3 4
6 1 2 9 10 7 8 4 5 3 11
6 1 9 8 11 2 7 10 3 5 4
6 2 3 8 10 4 11 5 7 1 9
6 2 8 7 11 1 10 9 5 3 4
6 2 9 8 10 4 5 11 1 7 3
6 4 8 7 9 1 10 11 5 3 2
6 8 2 3 9 11 10 5 1 7 4
6 8 2 9 3 5 10 11 7 1 4
7 1 2 10 8 9 5 6 3 4 11
7 1 9 8 10 3 6 11 2 5 4
7 2 1 9 8 10 6 5 3 4 11
7 3 9 5 11 4 8 10 1 6 2
7 4 2 10 5 11 3 9 1 6 8
7 8 1 9 2 10 6 11 3 4 5
8 1 3 11 6 7 5 9 4 2 10
8 2 9 6 10 4 7 11 1 5 3
8 3 1 9 6 11 5 7 2 4 10
8 3 2 11 4 7 6 10 5 1 9
8 3 7 6 9 2 11 10 5 1 4
8 6 1 9 3 11 5 10 2 4 7
8 6 7 3 9 5 11 10 2 4 1
8 7 3 2 9 10 11 6 1 5 4
9 1 5 10 6 7 4 11 2 3 8
9 1 7 5 11 4 10 8 3 2 6
9 5 6 2 10 7 11 8 1 4 3
10 2 4 9 5 7 6 11 3 1 8
10 2 7 6 8 4 9 11 3 1 5
10 4 2 7 5 11 6 9 1 3 8
11 3 5 4 8 7 10 9 2 1 6
11 3 6 4 8 7 9 10 1 2 5
11 4 3 5 6 10 8 9 1 2 7
11 4 3 6 5 9 8 10 2 1 7

TOP

1 4 2 10 11 5 9 3 7 6 8
1 4 7 11 10 2 6 9 5 8 3
1 5 7 9 11 4 6 8 3 10 2
1 6 3 11 8 2 10 7 9 4 5
...
realnumber 发表于 2016-11-26 08:59


12个点应该是12个数,这里为啥只11个数?

这让我想起了类似某道点阵图。。。。

TOP

回复 3# isee


    数字12位置已经固定,
a11=66-a1-a2-...-a10所以是10个循环。

TOP

回复  isee


    数字12位置已经固定,
a11=66-a1-a2-...-a10所以是10个循环。
realnumber 发表于 2016-11-27 07:55


sorry 没看首楼的程序语言。。

TOP

本帖最后由 realnumber 于 2016-11-27 12:29 编辑

小小修改了下,去掉关于数字12所在轴对称,有44个解。
var
   a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11 : integer;
begin
for a1:=1 to 11 do
   begin
   for a2:=1 to 11 do
        begin
        if a2=a1 then continue;
        for a3:=1 to 11 do
            begin
            if (a3=a1) or (a3=a2) then continue;
            for a4:=1 to 11 do
              begin
              if (a4=a1) or (a4=a2) or (a4=a3) then continue;
              for a5:=1 to 11 do
                begin
                  if (a5=a1) or (a5=a2) or (a5=a3) or (a5=a4)  then continue;
                  if a1+a2+a4+a5<>26 then continue;
                  for a6:=1 to 11 do
                    begin
                    if (a6=a1) or (a6=a2) or (a6=a3) then continue;
                    if (a6=a4) or (a6=a5)  then continue;
                    for a7:=2 to 11 do
                      begin
                      if (a7=a1) or (a7=a2) or (a7=a3)  then continue;
                      if (a7=a4) or (a7=a5) or (a7=a6)  then continue;
                      if a3+a4+a6+a7<>26 then continue;
                      for a8:=2 to 11 do
                        begin
                        if (a8=a1) or (a8=a2) or (a8=a3) or (a8=a4) then continue;
                        if (a8=a5) or (a8=a6) or (a8=a7)  then continue;
                        for a9:=2 to 11 do
                           begin
                           if (a9=a1) or (a9=a2) or (a9=a3) or (a9=a4)   then continue;
                           if (a9=a5) or (a9=a6) or (a9=a7) or (a9=a8)   then continue;
                           if a5+a6+a8+a9<>26 then continue;
                           for a10:=2 to 11 do
                              begin
                              if (a10=a1) or (a10=a2) or (a10=a3)   then continue;
                              if (a10=a4) or (a10=a5) or (a10=a6)   then continue;
                              if (a10=a7) or (a10=a8) or (a10=a9)   then continue;
                              a11:=66-a1-a2-a3-a4-a5-a6-a7-a8-a9-a10;
                              if a11=1 then  continue;
                              if a7+a8+a10+a11<>26 then continue;
                              if a3+a2+a11+12<>26 then continue;
                              if a1+a9+a10+12<>26 then continue;
                             write(a1,' ',a2,' ',a3,' ',a4,' ',a5,' ',a6,' ');
                             write(a7,' ',a8, ' ',a9,' ',a10,' ',a11,' ');
                             writeln;
                             end;
                           end;
                        end;
                      end;
                    end;
                end;
              end;
            end;
        end;
   end;
end.

TOP

本帖最后由 realnumber 于 2016-11-27 12:48 编辑

数字12放在顶点位置,同之前猜测的有一样多的44个解,估计可以构造一个一一映射,把6楼和7楼的解对应起来.
var
   a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11 : integer;
begin
for a1:=1 to 11 do
   begin
   for a2:=1 to 11 do
        begin
        if a2=a1 then continue;
        for a3:=1 to 11 do
            begin
            if (a3=a1) or (a3=a2) then continue;
            for a4:=1 to 11 do
              begin
              if (a4=a1) or (a4=a2) or (a4=a3) then continue;
              if 12+a1+a3+a4<>26 then continue;
              for a5:=1 to 11 do
                begin
                  if (a5=a1) or (a5=a2) or (a5=a3) or (a5=a4)  then continue;
                  for a6:=1 to 11 do
                    begin
                    if (a6=a1) or (a6=a2) or (a6=a3) then continue;
                    if (a6=a4) or (a6=a5)  then continue;
                    if a2+a3+a5+a6<>26 then continue;
                    for a7:=2 to 11 do
                      begin
                      if (a7=a1) or (a7=a2) or (a7=a3)  then continue;
                      if (a7=a4) or (a7=a5) or (a7=a6)  then continue;
                      for a8:=2 to 11 do
                        begin
                        if (a8=a1) or (a8=a2) or (a8=a3) or (a8=a4) then continue;
                        if (a8=a5) or (a8=a6) or (a8=a7)  then continue;
                        if a4+a5+a7+a8<>26 then continue;
                        for a9:=2 to 11 do
                           begin
                           if (a9=a1) or (a9=a2) or (a9=a3) or (a9=a4)   then continue;
                           if (a9=a5) or (a9=a6) or (a9=a7) or (a9=a8)   then continue;
                           for a10:=2 to 11 do
                              begin
                              if (a10=a1) or (a10=a2) or (a10=a3)   then continue;
                              if (a10=a4) or (a10=a5) or (a10=a6)   then continue;
                              if (a10=a7) or (a10=a8) or (a10=a9)   then continue;
                              if a6+a7+a9+a10<>26 then continue;
                              a11:=66-a1-a2-a3-a4-a5-a6-a7-a8-a9-a10;
                              if a11=1 then  continue;
                              if a1+a2+a10+a11<>26 then continue;
                              if a8+a9+a11+12<>26 then continue;
                             write(a1,' ',a2,' ',a3,' ',a4,' ',a5,' ',a6,' ');
                             write(a7,' ',a8, ' ',a9,' ',a10,' ',a11,' ');
                             writeln;
                             end;
                           end;
                        end;
                      end;
                    end;
                end;
              end;
            end;
        end;
   end;
end.

TOP

.....写了个随笔,见附件

爸爸还没做出来.doc (55.5 KB)

TOP

返回列表 回复 发帖