1-100中,
求:5个不同数的和小于100的不重复组合的个数.
求效率比较高的算法。用for循环写,是个人都会,这样效率太差了, 排除.
先谢谢大家了!
求:5个不同数的和小于100的不重复组合的个数.
求效率比较高的算法。用for循环写,是个人都会,这样效率太差了, 排除.
先谢谢大家了!
解决方案 »
- 小女子请问一个 Ext.ux.grid.RowEditor的问题
- Struts2 jsp页面怎么截值
- frameset的滚动条,大家给我看看
- 简单的小问题!!
- jfree的问题
- tomcat : Java heap space 问题,不是单纯的内存溢出,因为我访问的页面是,最简单的JSP页面,什么都没做
- 在一个WEB程序中,想往my sql 数据库中插入 中文 怎么办!
- 关于MYSQL本地非法拷贝的问题```大家帮忙看一下。
- sax找不到路径,明明是存在的?
- 郁闷,报这个错是什么原因呢
- java 怎么遍历ftp目录下的所有目录以及文件名称,取出文件的相对路径
- Jprofiler 监视TOMCAT 找人帮忙分析下 结果
偶没看明白什么意思,每次循环的判断哪里为什么会是那4个数值?达人解释下.
package com.hmilyld.exp;public class NumExp { /**
* @param args
*/
public static void main(String[] args) {
int total = 0;
int num = 0;
/**
* 第一个数取到17
*/
for (int i = 1; i < 18; i++) {
/**
* 第二个数取到23
*/
for (int j = i + 1; j < 24; j++) {
/**
* 第三个数取到31
*/
for (int k = j + 1; k < 32; k++) {
/**
* 第四个数取到46
*/
for (int l = k + 1; l < 47; l++) {
int m = 99 - i - j - k - l;
if (m > l) {
num++;
total = total + (m - l);
}
}
}
}
}
System.out.println("总数:"+total);
System.out.println("循环次数:"+num);
}}
import java.util.Hashtable;
public class ByteArrayTest { public static void main(String[] args) throws Exception{
int all=0,satisfied=0;
Hashtable buffer=new Hashtable();
for(int v1=0; v1<100;v1++){
for(int v2=(100-v1);v2>=0 && v2<=v1;v2--){
for(int v3=(100-v1-v2);v3>=0 && v3<=v2;v3--){
for(int v4=(100-v1-v2-v3);v4>=0 && v4<=v3;v4--){
for(int v5=(100-v1-v2-v3-v4);v5>=0 && v5<=v4;v5--){
if (v1+v2+v3+v4+v5<100){
satisfied++;
String key=v1+","+v2+","+v3+","+v4+","+v5;
buffer.put(key,key);
}
all++;
}
}
}
}
}
System.out.println("全部循环:"+all+", 满足条件的:"+satisfied+", 排重后:"+buffer.keySet().size());
}
}
全部循环:14447, 满足条件的:7168, 排重后:7168