由8整数形成奇特的立方体
任意给出8个整数,将这8个数分别放在一个立方体的八个顶点上,要求每个面上的四个数之和皆相等。
#include<stdio.h>
int main()
{
int a,a1,a2,a3,b,b1,b2,b3;
int c[9],ii = 0,i,flag;
for(i = 1;i <= 8; i++)
{
printf("Please enter [%d] number:",i);
scanf("%d",&c[i]);
ii += c[i];
}
printf("******************************\n");
if(ii%2)
{
printf("Sorry they can't be constructed required cube!\n");
return 0;
}
for(flag = 0,a = 1; a <= 8; a++)
{
for(a1 =1; a1 <= 8; a1++)
{
if(a1 != a)
{
for(a2 = 1; a2 <= 8; a2++)
{
if(a2 != a1 && a2 != a)
{
for(a3 =1; a3 <= 8; a3++)
{
if(a3 != a2 && a3 != a1 && a3 != a)
{
for(b = 1; b <= 8; b++)
{
if(b != a3 && b != a2 && b != a1 && b != a)
{
for(b1 = 1; b1 <= 8; b1++)
{
if(b1 != a3 && b1 != a2 && b1 != a1 && b1 != a && b1 != b)
{
for(b2 = 1; b2 <= 8; b2++)
{
if(b2 != a3 && b2 != a2 && b2 != a1 && b2 != a && b2 != b1 && b2 !=b)
{
for(b3 = 1; b3 <= 8; b3++)
{
if(b3 != a3 && b3 != a2 && b3 != a1 && b3 != a && b3 != b2 && b3 != b1 && b3 !=b)
{
if(c[b]+c[b1]+c[b2]+c[b3] == ii/2 && c[a]+c[a1]+c[b]+c[b1] == ii/2 && c[a]+c[a3]+c[b]+c[b3] == ii/2)
{
flag = 1;
goto out;
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
out:
if(flag)
{
printf("They can be constructed required cube as follow:\n");
printf(" %2d/----------------/%2d\n",c[a3],c[a2]);
printf(" %2d/----------------/%2d|\n",c[a],c[a1]);
printf(" | | | |\n");
printf(" | | | |\n");
printf(" |%2d| | |%2d\n",c[b3],c[b2]);
printf(" | /--------------|-/\n");
printf(" %2d/-----------------/%2d\n",c[b],c[b1]);
}
else
{
printf("Sorry they can't be constructed required cube!\n");
}
return 0;
}
运行结果:
今天任务复习,看8种排序的方法