啊哈磊_编程从这里起步

标题: 三角形 相加相等问题(P130 更进一步) [打印本页]

作者: Dear    时间: 2015-8-16 11:01
标题: 三角形 相加相等问题(P130 更进一步)
用1-6这6个自然数组成一个三角形并让这个三角形三条边的值之和相等
例如:图片上数字分别为5+3+4=4+2+6=6+1+5=12
请输出所有可能  
表示不会啊···{:soso_e149:}求大神解答
用的函数表太多我很多都还没学·····看不懂

QQ截图20150816105832.png (5.48 KB, 下载次数: 2)

QQ截图20150816105832.png

作者: 老衲用飘柔    时间: 2015-8-16 11:01
最简单的方法就是一个一个试呗,例如用for循环。下面这段我试着输出可能有点问题,人不聪明你将就看吧,反正就这个意思。
#include <stdio.h>
#include <stdlib.h>
int main()
{
        int a,b,c,d,e,f;                       //对应的6个值,顺序什么的随便
   
    for(a=1;a<=6;a++)                 //笨办法开始啦,一个一个循环
    {
                for(b=1;b<=6;b++)
        {
                        for(c=1;c<=6;c++)
            {
                                for(d=1;d<=6;d++)
                {
                                        for(e=1;e<=6;e++)
                    {
                                                for(f=1;f<=6;f++)
                        {
                                                        if(a+b+c==c+d+e  &&  a+b+c==a+e+f)
                                                                printf("%d %d %d %d %d %d %d\n",a,b,c,d,e,f);
                           
                        }
                    }
                }
            }
        }
    }
        system("pause");
        return 0;
}

作者: cad20020601    时间: 2015-8-16 17:41
讲一下思路,一个数组a[6],里面是各个圆圈里的数,之后开始123456的全排列,最后判断是否成立。
这里的重点在于全排列以及数组对应的圆圈里的数,我们可以将最上面那个数为a[0],之后顺时针依次为a[1],a[2]......那么三角形的三边就可以用数组表示啦ww
我是月影,希望能够帮助到你啦wwwww
作者: deist    时间: 2017-7-18 17:08
#include <stdio.h>
#include <stdlib.h>
int main()
{
          int a,b,c,d,e,f;
       printf("A B C D E F \n");
        printf("----------- \n");
      for(a=1;a<=6;a++)
      {
                  for(b=1;b<=6;b++)
          {
                                for(c=1;c<=6;c++)
                                {
                                        for(d=1;d<=6;d++)
                    {
                                                for(e=1;e<=6;e++)
                        {
                                                        for(f=1;f<=6;f++)
                            {
                                                        if (   a!=b
                                                                && a!=c
                                && a!=d
                                && a!=e
                                && a!=f
                                
                                && b!=c
                                && b!=d
                                && b!=e
                                && b!=f
                                
                                && c!=d
                                && c!=e
                                && c!=f
                                
                                && d!=e
                                && d!=f
                                
                                && e!=f        )
                                {
                                                                         
                                    
                                                                        if(12==a+b+c  && 12==c+d+e  &&   12==e+f+a)
                                    
                                    
                                    
                                                                        printf("%d %d %d %d %d %d \n",a,b,c,d,e,f);
                                    
                                    
                                   
                                    
                                }
                        }
                    }
                }
          }
      }
}

      
      
        system("pause");
        return 0;
}




欢迎光临 啊哈磊_编程从这里起步 (https://bbs.codeaha.com/) Powered by Discuz! X3.2