用JAVA写一个函数。功能例如以下:随意给定一组数,比如{12,60,-8,99,15,35,17,18},找出随意数相加之后的结果为35(随意设定)的情况.
能够递归算法来解:
package test1; import java.util.Arrays; public class demo { public static void main(String[] args) {
String str = "12,60,-8,99,15,35,17,18,8,10,11,12";
int sum = 35;
diguiSum(str,sum);
} public static void diguiSum(String str,int sum) {
String[] x = str.split(",");
int[] array = arrayTransform(x);
for (int i = 0; i < array.length; i++) {
int[] cache = new int[i + 1];
int ceng = -1;
int cengQuit = i;
int startPiont = 0;
cir(ceng, cengQuit, startPiont, array, cache, sum);
}
} // 递归求结果
public static void cir(int ceng, int cengQuit, int startPiont, int[] array, int[] cache, int sum) {
ceng++;
for (int i = startPiont; i < array.length; i++) {
cache[ceng] = array[i];
if (ceng == cengQuit) {
if (getSum(cache) == sum) {
printcache(cache);
}
if (getSum(cache) > sum) {
break;
}
}
if (ceng < cengQuit) {
startPiont = i + 1;
cir(ceng, cengQuit, startPiont, array, cache,sum);
}
}
} // 获取组合数字之和
public static int getSum(int[] cache) {
int sum = 0;
for (int i = 0; i < cache.length; i++) {
sum = sum + cache[i];
}
return sum;
} // 打印组合的可能
public static void printcache(int[] cache) {
for (int i = 0; i < cache.length; i++) {
System.out.print(cache[i] + ",");
}
System.out.println();
} // 转换数组类型 且为提高效率做准备
public static int[] arrayTransform(String[] strArray) {
int length = 0; int[] array = new int[strArray.length];
for (int i = 0; i < strArray.length; i++) {
array[i] = Integer.valueOf(strArray[i]);
}
Arrays.sort(array);
for (int i = 0; i < array.length; i++) {
if (array[i] > 35) {
length = i;
break;
}
}
int[] dest = new int[length];
System.arraycopy(array, 0, dest, 0, length);
return dest;
}
}
此算法有做适当參考。
执行结果:
用JAVA写一个函数,功能例如以下: 随意给定一组数, 找出随意数相加之后的结果为35(随意设定)的情况的更多相关文章
-
自动化测试(三)如何用python写一个函数,这个函数的功能是,传入一个数字,产生N条邮箱,产生的邮箱不能重复。
写一个函数,这个函数的功能是,传入一个数字,产生N条邮箱,产生的邮箱不能重复.邮箱前面的长度是6-12之间,产生的邮箱必须包含大写字母.小写字母.数字和特殊字符 和上一期一样 代码中间有段比较混沌 有 ...
-
假如现在有一堆长度大于3小于9的电话号码,用座机呼叫,如果出现这样的号码【123和12345】那么12345将永远不会被拨出,因为拨到123的时候电话已经呼出了,试写一个函数输出所有不能被呼出的电话号码(java实现)
解题: 假如现在有一堆长度大于3小于9的电话号码,用座机呼叫,如果出现这样的号码[123和12345]那么12345将永远不会被拨出,因为拨到123的时候电话已经呼出了,试写一个函数输出所有不能被呼出 ...
-
Java-集合(没做出来)第四题 (List)写一个函数reverseList,该函数能够接受一个List,然后把该List 倒序排列。 例如: List list = new ArrayList(); list.add(“Hello”); list.add(“World”); list.add(“Learn”); //此时list 为Hello World Learn reverseL
没做出来 第四题 (List)写一个函数reverseList,该函数能够接受一个List,然后把该List 倒序排列. 例如: List list = new ArrayList(); list.a ...
-
面试题-->;写一个函数,返回一个数组中所有元素被第一个元素除的结果
package com.rui.test; import java.util.Random; /** * @author poseidon * @version 1.0 * @date:2015年10 ...
-
五:用JAVA写一个阿里云VPC Open API调用程序
用JAVA写一个阿里云VPC Open API调用程序 摘要:用JAVA拼出来Open API的URL 引言 VPC提供了丰富的API接口,让网络工程是可以通过API调用的方式管理网络资源.用程序和软 ...
-
写一个函数,求一个字符串的长度,在main函数中输入字符串,并输出其长度
import java.util.Scanner; /** * [程序38] * * 题目:写一个函数,求一个字符串的长度,在main函数中输入字符串,并输出其长度. * * @author Jame ...
-
JS函数 编程练习 使用javascript代码写出一个函数:实现传入两个整数后弹出较大的整数。
编程练习 使用javascript代码写出一个函数:实现传入两个整数后弹出较大的整数. 任务 第一步: 编写代码完成一个函数的定义吧. 第二步: 我们来补充函数体中的控制语句,完成函数功能吧. 提示: ...
-
ytu 1050:写一个函数,使给定的一个二维数组(3&#215;3)转置,即行列互换(水题)
1050: 写一个函数,使给定的一个二维数组(3×3)转置,即行列互换 Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 154 Solved: 112[ ...
-
有两个指针pa,pb分别指向有两个数,a,b,请写一个函数交换两个指针的指向,也就是让pa指向b,让pb指向a
题目:有两个指针pa,pb分别指向有两个数,a,b,请写一个函数交换两个指针的指向,也就是让pa指向b,让pb指向a,具体实现如下: #include<stdlib.h> #include ...
随机推荐
-
ASP.NET项目部署到Linux服务器出现服务器错误
在Linux系统中安装了Mono和Apache作为Web服务器,使用Visual Studio开发的ASP.NET Web应用或者API应用,在部署到Linux服务器后出现服务器错误,其中一个原因是由 ...
-
Python Scopes and Namespaces
Before introducing classes, I first have to tell you something about Python's scope rules. Class def ...
-
Initialization of deep networks
Initialization of deep networks 24 Feb 2015Gustav Larsson As we all know, the solution to a non-conv ...
-
微软职位内部推荐-Principal Architect for Windows Security
微软近期Open的职位: Location: China, BeijingDivision: Operations System Group Engineering Group OverviewOSG ...
-
Android 推送和统计最优轮循(心跳策略)探究实践
http://blog.csdn.net/sk719887916/article/details/51398416 skay亲笔 Android开发中经常会用到周期性执行一个动作的需求,大的场景有推送 ...
-
vue 开发和生产的跨域问题
开发阶段 在开发环境与后端调试的时候难免会遇到跨域问题,在 vue 项目中常用的是 proxyTable,这个用起来很方便. 打开 config 文件夹下面的 index.js,找到 dev 开发模式 ...
-
刘志梅2017710101152.《面向对象程序设计(java)》第十二周学习总结
实验十二 图形程序设计 实验时间 2018-11-14 1.理论知识 (1) 基本AWT库采用将处理用户界面元素的任务委派给每个目标平台的本地GUI工具箱的方式,由本地GUI工具箱负责用户界面元素的 ...
-
C#退出窗体的总结方法
一.关闭窗体 在c#中退出WinForm程序包括有很多方法,如:this.Close(); Application.Exit();Application.ExitThread(); System.En ...
-
sench touch 页面跳转
下面是我做的一个简单的登录页面登录成功后跳转页面 首页要在app.js 里面添加 1.视图层 登录页面 Ext.define('MyApp.view.Login', { extend: 'Ext. ...
-
合并CSV文件.bat
@echo off E:\保存文件夹 cd E:\文件所在的文件夹 dir copy *.csv all_keywords.csv echo @@@@@@@@@@@@@合并成功!@@@@@@@@@@@ ...