小编程题 int[] a = {100,200,300,400,500};给你这几个数,让你把这里面任意加起来=600的数打印出来,不能重复 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 此回复为自动发出,仅用于显示而已,并无任何其他特殊作用楼主【dxb828】截止到2008-07-30 10:51:56的历史汇总数据(不包括此帖):发帖的总数量:45 发帖的总分数:120 每贴平均分数:2 回帖的总数量:18 得分贴总数量:0 回帖的得分率:0% 结贴的总数量:45 结贴的总分数:120 无满意结贴数:38 无满意结贴分:660 未结的帖子数:0 未结的总分数:0 结贴的百分比:100.00% 结分的百分比:100.00% 无满意结贴率:84.44 % 无满意结分率:550.00% 敬礼!取消马甲机器人,请点这里:http://www.java2000.net/mycsdn/robotStop.jsp?usern=dxb828 public static void main(String[] args) { int[] a = {100,200,300,400,500}; for(int i=0;i<a.length;i++){ for(int j=i+1;j<a.length;j++){ if(a[i]+a[j]==600){ System.out.println(a[i]+"+"+a[j]+"==600"); } } } } 嘿嘿,好久不玩这个了。试试看。package TestCode;/** * * @author www.baizeju.com */public class TestCode { public static void main( String[] args ) { int[] data = {100,200,300,400,500}; int nTarget = 600; int nItemNumber = data.length; int nIndex; int nLoopValue=(int) Math.pow(2,nItemNumber); for(nIndex=0;nIndex<nLoopValue;nIndex++){ int nResult=0; int nLoop=nIndex; String szResult=""; for(int nIndex1=nItemNumber-1;nIndex1>=0;nIndex1--) { if(nLoop>=(int)Math.pow(2, nIndex1)) { nResult+=data[nIndex1]; szResult+= Integer.toString(data[nIndex1])+" "; nLoop-=(int)Math.pow(2, nIndex1); } } if( nResult==nTarget) { System.out.println( szResult) ; } } }} 在你事先无法确定需要判断的数字个数的情况下,没法写固定层数的循环来处理。用一个二进制数字的0、1来判断是比较容易实现的一种方法。当然也是效率最差的,呵呵,实际就是用二进制来控制多层循环了。实际可可以再优化一点,比如当nResult已经大于nTarget的时候就应该continue了。 js冲突???急!! POJO的一个问题 一个关于middlegen-build.xml的问题,分不够马上加!!!!!! java可以做三维图形开发吗? 时间年份 十万火急高分急求一个java gui通讯录程序,要求如下 java中,如何用鼠标动态改变一个图片的大小? 探讨请教一个问题:用Java查询其他电脑的使用情况 请问翻屏操作怎么实现? 【Swing】为JFrame添加背景图片的简单方法是什么? 脑子一时晕了,大家帮忙解答下,不难的~~ java动态演示时paintComponent()和run()的分工
楼主【dxb828】截止到2008-07-30 10:51:56的历史汇总数据(不包括此帖):
发帖的总数量:45 发帖的总分数:120 每贴平均分数:2
回帖的总数量:18 得分贴总数量:0 回帖的得分率:0%
结贴的总数量:45 结贴的总分数:120
无满意结贴数:38 无满意结贴分:660
未结的帖子数:0 未结的总分数:0
结贴的百分比:100.00% 结分的百分比:100.00%
无满意结贴率:84.44 % 无满意结分率:550.00%
敬礼!
取消马甲机器人,请点这里:http://www.java2000.net/mycsdn/robotStop.jsp?usern=dxb828
int[] a = {100,200,300,400,500};
for(int i=0;i<a.length;i++){
for(int j=i+1;j<a.length;j++){
if(a[i]+a[j]==600){
System.out.println(a[i]+"+"+a[j]+"==600");
}
}
}
}
*
* @author www.baizeju.com
*/public class TestCode {
public static void main( String[] args ) {
int[] data = {100,200,300,400,500};
int nTarget = 600;
int nItemNumber = data.length;
int nIndex;
int nLoopValue=(int) Math.pow(2,nItemNumber);
for(nIndex=0;nIndex<nLoopValue;nIndex++){
int nResult=0;
int nLoop=nIndex;
String szResult="";
for(int nIndex1=nItemNumber-1;nIndex1>=0;nIndex1--) {
if(nLoop>=(int)Math.pow(2, nIndex1)) {
nResult+=data[nIndex1];
szResult+= Integer.toString(data[nIndex1])+" ";
nLoop-=(int)Math.pow(2, nIndex1);
}
}
if( nResult==nTarget) {
System.out.println( szResult) ;
}
}
}
}
用一个二进制数字的0、1来判断是比较容易实现的一种方法。当然也是效率最差的,呵呵,实际就是用二进制来控制多层循环了。
实际可可以再优化一点,比如当nResult已经大于nTarget的时候就应该continue了。