这个代码写起来还是挺麻烦 的,我写了个三角形的判断的。。。。贴出来参考下。剩下的实在没时间写了,要搞正事了。。
include
int get_level(int n)
{
int sum = 0;
int i = 0;
for(i = 0; i < 32767; i++)
{
sum += (i + 1);
if(n <= sum)
{
return i;
}
}
}
int get_left_on(int n, int i)
{
int res = (n - i - 1);
return (res > 0 ? res:0);
}
int get_right_on(int n, int i)
{
int res = (n - i);
return (res > 0? res:0);
}
int get_left(int n)
{
int res = n - 1;
return (res > 0? res:0);
}
int get_right(int n)
{
return n + 1;
}
int get_left_down(int n, int i)
{
return n + i + 1;
}
int get_right_down(int n, int i)
{
return n + i + 2;
}
int get_min_from_three(int a, int b, int c)
{
int min = a;
if(b < min)
{
min = b;
}
if(c < min)
{
min = c;
}
return min;
}
int get_max_from_three(int a, int b, int c)
{
int max = a;
if(b > max)
{
max = b;
}
if(c > max)
{
max = c;
}
return max;
}
int get_second_min_from_three(int a, int b, int c)
{
if(a > b)
{
if(b > c)
{
return b;
}
else if(a < c)
{
return a;
}
else
{
return c;
}
}
else
{
if(a > c)
{
return a; //b > a > c
}
else if(b < c)
{
return b;//c > b > a
}
else
{
return c; // b > c > a
}
}
}
int judge_three(int a, int b, int c)
{
int min = get_min_from_three(a, b, c);
int max = get_max_from_three(a, b, c);
int second_min = get_second_min_from_three(a,b,c);
int i = 0;
int j = 0;
int left_down = 0;
int right = 0;
int level = get_level(min);
left_down = get_left_down(min, level);
for(i = 0; i < 32767; i++)
{
if(second_min < left_down)
{
return -1;
}
if(second_min == left_down)
{
break;//found
}
level++;
left_down = get_left_down(left_down, level);
}
if(i == 32767)
{
return -1;
}
right = get_right(second_min);
for(j = 0; j < 32767; j++)
{
if(max < right)
{
return -1;
}
if(max == right)
{
break;//found
}
right = get_right(right);
}
if(i == j)
{
return 0;//found
}
return -1;
}
int main(int argc, char **argv)
{
printf("hello world !\n");
int res = 0;
res = judge_three(1,4,6);
if(res == 0)
{
printf("three found!\n");
}
else
{
printf("not three!\n");
}
res = judge_three(2,4,6);
if(res == 0)
{
printf("three found!\n");
}
else
{
printf("not three!\n");
}
return 0;
}