java编程算法题_Java编程算法题

这个代码写起来还是挺麻烦 的,我写了个三角形的判断的。。。。贴出来参考下。剩下的实在没时间写了,要搞正事了。。

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;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值