java 逻辑编程题

来源:百度知道 编辑:UC知道 时间:2024/05/25 11:32:47
1到99的数字,不限制加数的情况下,有多少可能它们的和等于100,如:1+99=100, 1+2+97=100

这个问题,首先应该是在纯数学方面去找出算法之后,再把这个算法换成程序,楼主可以试试去数学区或一些专门的数学论坛找找这个问题的答案先.本人数学比较差,实在想不出这个算法.

如果不做数学上的简化的话,程序可以这样写
int count=0;
for(int i1=1;i1<=99;i1++)
for(int i2=1;i2<=99;i2++)
for(int i3=0;i3<=99;i3++)
for(int i4=0;i4<=99;i4++)
.......//表示省略,一直写100个for,除了前两个是从1开始,其他都是从0开始
for(int i100=0;i100<=99;i100++)
if(i1>=i2&&i2>=i3&&a3>=i4&&...&&i99>=i100&&
i1+i2+i3+..+i100==100)
count++;
System.out.println(count);

打印出来的应该就是你要的答案了.当然这个程序只是理论上可行的程序,这个程序的时间复杂度的数量级在n的100次方,真正这样计算的话,不知道要算多少年才能算出答案.说不定要算到地球毁灭的那一天......

所以这个问题的难度在纯数学层面的,数学太差帮不上忙,没办法.

题目不清楚

可以重复吗?比如

1+1+1+。。。。+1=100

呵呵,我觉得题目还是蛮清楚的,是不加限制的情况下

花了半个多小时换了好几种方法后推出来的,应该是正解。
public static void main(String[] args) {
System.out.print(isNumber(100));
}
public static int isNumber(int i){
if(i==2)
return 1;
/*
else if(i==3)
return isNumber(2)+3/2;
el