我已经把它钉了下来,但它效率很低,因为它返回并检查相同的事情(a + b + c和a + c + b以及其他变体而不仅仅是+ b + c)。
有什么办法可以避免吗?我的代码如下:
int array[8]={4,5,6,0,3,2,1,9};
int i = 0, j = 0, k = 0, nmbr = 10;
for(i=0; i<8; ++i){
for(j=0; j<8; ++j){
for(k=0; k<8; ++k){
if((array[i]+array[j]+array[k]) == nmbr)
printf("%d is found with %d + %d + %d\n", nmbr, array[i], array[j], array[k]);
}
}
}
任何帮助将不胜感激。
答案 0 :(得分:2)
从j
开始i
,从k
开始j
,或者如果解决方案中不允许重复索引,那么让j
从i+1
开始来自k
的{1}}和j+1
。
int array[8]={4,5,6,0,3,2,1,9};
int i = 0, j = 0, k = 0, nmbr = 10;
for(i=0; i<8; ++i){
for(j=i; j<8; ++j){
for(k=j; k<8; ++k){
if((array[i]+array[j]+array[k]) == nmbr)
printf("%d is found with %d + %d + %d\n", nmbr, array[i], array[j], array[k]);
}
}
}
答案 1 :(得分:2)
变化:
for(i=0; i<8; ++i){
for(j=0; j<8; ++j){
for(k=0; k<8; ++k){
为:
for(i=0; i<8-2; ++i){
for(j=i+1; j<8-1; ++j){
for(k=j+1; k<8; ++k){
注意:这假设i
,j
,k
需要与众不同。如果这不是一个要求,那么很容易改变:
for(i=0; i<8; ++i){
for(j=i; j<8; ++j){
for(k=j; k<8; ++k){
答案 2 :(得分:2)
使用j = i
启动第二个循环,第三个循环使用k = j
(+ 1
,如果你的总数不能相同,则为<?xml version="1.0"?>
<project name="svn-test" basedir="." default="checkoutThis">
<property file="build.properties" />
<path id="project.classpath">
<pathelement location="C:\Program Files\apache-ant\ant-1.8.2\lib\jsvn-0.9-dev.jar" />
<pathelement location="C:\Program Files\apache-ant\ant-1.8.2\lib\commons-lang-2.3.jar" />
<pathelement location="C:\Program Files\apache-ant\ant-1.8.2\lib\jakarta-regexp-1.3.jar" />
<pathelement location="C:\Program Files\apache-ant\ant-1.8.2\lib\svnant.jar"/>
<pathelement location="C:\Program Files\apache-ant\ant-1.8.2\lib\svnClientAdapter.jar"/>
<pathelement location="C:\Program Files\apache-ant\ant-1.8.2\lib\svnkit.jar"/>
<pathelement location="C:\Program Files\apache-ant\ant-1.8.2\lib\svnjavahl.jar"/>
</path>
<typedef resource="org/tigris/subversion/svnant/svnantlib.xml" classpath="C:\Program Files\apache-ant\ant-1.8.2\lib\svnant.jar;C:\Program Files\apache-ant\ant-1.8.2\lib\svnClientAdapter.jar;C:\Program Files\apache-ant\ant-1.8.2\lib\svnkit.jar;C:\Program Files\apache-ant\ant-1.8.2\lib\svnjavahl.jar" />
<target name="checkoutThis">
<svn username="sss" password="sss">
<checkout url="https://svn.strobilanthes.com/svn/nutanstplus/" revision="HEAD" destPath="Sample_SVN" />
</svn>
</target>
<target name="build" depends="checkoutThis">
<description>Main target</description>
</target>
</project>