/*
缘于:深圳腾讯2010安全技术竞赛:第一阶段第二题.
这里弄一个简单的:三阶幻方又叫九宫格.
这是一个算法题,我不懂矩阵相乘,排列组合,多元一次方程也不想用.
算法需要编程实现,这就是只最简单的编程,最慢的算法.
made by correy
made at 2013.10.09
email:kouleguan at hotmail dot com
homepage:http://correy.webs.com
*/
#include "stdio.h"
#include "stdlib.h"
void print_it(int a1,int a2,int a3,int b1,int b2,int b3,int c1,int c2,int c3)
{
printf("\n\n");
printf("%d %d %d \n",a1,a2,a3);
printf("%d %d %d \n",b1,b2,b3);
printf("%d %d %d \n",c1,c2,c3);
}
bool is_it(int a1,int a2,int a3,int b1,int b2,int b3,int c1,int c2,int c3)
{
bool b = false;
if (a1 == a2 || a1 == a3 || a1 == b1 || a1 == b2 || a1 == b3 || a1 == c1 || a1 == c2 || a1 == c3)
{
return b;
}
if (a2 == a3 || a2 == b1 || a2 == b2 || a2 == b3 || a2 == c1 || a2 == c2 || a2 == c3)
{
return b;
}
if (a3 == b1 || a3 == b2 || a3 == b3 || a3 == c1 || a3 == c2 || a3 == c3)
{
return b;
}
if (b1 == b2 || b1 == b3 || b1 == c1 || b1 == c2 || b1 == c3)
{
return b;
}
if (b2 == b3 || b2 == c1 || b2 == c2 || b2 == c3)
{
return b;
}
if (b3 == c1 || b3 == c2 || b3 == c3)
{
return b;
}
if (c1 == c2 || c1 == c3)
{
return b;
}
if (c2 == c3)
{
return b;
}
int x1 = a1 + a2 + a3;
int x2 = b1 + b2 + b3;
int x3 = c1 + c2 + c3;
int y1 = a1 + b1 + c1;
int y2 = a2 + b2 + c2;
int y3 = a3 + b3 + c3;
int xy = a1 + b2 + c3;
int yx = a3 + b2 + c1;
if (x1 == x2 && x1 == x3 && x1 == y1 && x1 == y2 && x1 == y3 && x1 == xy && x1 == yx)
{
b = true;
}
return b;
}
int main( int argc, char *argv[] )
{
for (int a1 = 1;a1 <= 9;a1++)
{
for (int a2 = 1;a2 <= 9;a2++)
{
for (int a3 = 1;a3 <= 9;a3++)
{
for (int b1 = 1;b1 <= 9;b1++)
{
for (int b2 = 1;b2 <= 9;b2++)
{
for (int b3 = 1;b3 <= 9;b3++)
{
for (int c1 = 1;c1 <= 9;c1++)
{
for (int c2 = 1;c2 <= 9;c2++)
{
for (int c3 = 1;c3 <= 9;c3++)
{
bool b = is_it(a1,a2,a3,b1,b2,b3,c1,c2,c3);
if (b)
{
print_it(a1,a2,a3,b1,b2,b3,c1,c2,c3);
}
}
}
}
}
}
}
}
}
}
return 0;
}
没有评论:
发表评论