当前位置: 代码迷 >> 计算机图书 >> 一个逻辑题不会做,大伙儿帮帮忙
  详细解决方案

一个逻辑题不会做,大伙儿帮帮忙

热度:161   发布时间:2016-04-29 11:28:30.0
一个逻辑题不会做,大家帮帮忙

------解决方案--------------------
第一个三角形:
6   2   5
  4   3
    1
第二个三角形:
6   10   1   8
  4    9   7
    5    2
      3
第三个三角形:
13    3    15   14   6
   10   12    1    8
      2    11    7
         9    4
            5


给分吧!!
------解决方案--------------------
我把计算第二个三角形的代码发出来,计算第一个和第三个三角形的代码只是减少或增加几行而已,原理不变。
#include <IOSTREAM>
#include <MATH.H>
using namespace std;
#define COUNT 10
void InitialTower(int *p,int one,int two,int three,int four)
{
p[0]=one;
p[1]=two;
p[2]=three;
p[3]=four;
}
bool HaveRepeatNum(int *p,int len)
{
for (int i=0;i<len;i++)
{
for (int j=i+1;j<len;j++)
{
if (p[i]==p[j])
{
return true;
}
}
}
return false;
}
int main()
{
int Tower[COUNT]={0};
int Tower21,Tower22,Tower23;
int Tower31,Tower32;
int Tower41;
for (int i=1;i<=COUNT;i++)
{
for (int j=1;j<=COUNT;j++)
{
for (int k=1;k<=COUNT;k++)
{
for (int m=1;m<=COUNT;m++)
{
if (i==j
------解决方案--------------------
i==k
------解决方案--------------------
i==m
------解决方案--------------------
j==k
------解决方案--------------------
j==m
------解决方案--------------------
k==m)
{
continue;
}
InitialTower(Tower,i,j,k,m);
Tower21=abs(i-j);
Tower22=abs(j-k);
Tower23=abs(k-m);
Tower[4]=Tower21;
Tower[5]=Tower22;
Tower[6]=Tower23;
Tower31=abs(Tower21-Tower22);
Tower32=abs(Tower23-Tower22);
Tower41=abs(Tower32-Tower31);
Tower[7]=Tower31;
Tower[8]=Tower32;
Tower[9]=Tower41;
if (HaveRepeatNum(Tower,COUNT))
{
continue;
}
cout<<Tower[0]<<" "<<Tower[1]<<" "<<Tower[2]<<" "<<Tower[3]<<endl;
}
}
}
}
return 0;
}

由于倒三角的首行一旦确定,其下面内容就随之确定了,运行结果只输出倒三角最上面的4个数。
------解决方案--------------------
用程序做是一时求快,想给出楼主题目的解答,我本人是爱好数学的,我回去再想想用数学严格求解。
如果高斯再世,我想这题根本不在话下。
  相关解决方案