算法训练 和为T  
时间限制:1.0s   内存限制:256.0MB
问题描述
  从一个大小为n的整数集中选取一些元素,使得它们的和等于给定的值T。每个元素限选一次,不能一个都不选。
输入格式
  第一行一个正整数n,表示整数集内元素的个数。
  第二行n个整数,用空格隔开。
  第三行一个整数T,表示要达到的和。
输出格式
  输出有若干行,每行输出一组解,即所选取的数字,按照输入中的顺序排列。
  若有多组解,优先输出不包含第n个整数的;若都包含或都不包含,优先输出不包含第n-1个整数的,依次类推。
  最后一行输出总方案数。
样例输入
5
-7 -3 -2 5 9
0
样例输出
-3 -2 5
-7 -2 9
2
数据规模和约定
  1<=n<=22
  T<=maxlongint
  集合中任意元素的和都不超过long的范围
 
示例代码:
 import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader; public class Main {
static int sum = 0 ;
static int n = 0 ;
static int l = 0 ; //b数组存的数的个数
static int count = 0 ;
static int[] a = new int[23];
static int[] b = new int[23]; public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
n = Integer.parseInt(br.readLine());
String[] str = br.readLine().split(" ");
a = new int[n];
for(int i = n-1 ; i >= 0 ; i-- ){
a[i] = Integer.parseInt(str[n-i-1]);
}
sum = Integer.parseInt(br.readLine()); f(0,0); System.out.println(count);
} private static void f(int k, long z) {
int i;
if (k==n)
{
if (z==sum&&l!=0) //如果z等于sum,并且从a数组取到一个数,就就将结果输出
{
for (i=l-1;i>=0;i--)
System.out.print(b[i]+" ");
count++; //记录一次方案
System.out.println();
}
return; //返回上一层
}
f(k+1,z); //k:从a取数的下标
b[l++]= a[k]; //将取的数存入b数组,并将l后移
f(k+1,z+a[k]); //调用新的k 和 b数组中的累加和
l--; }
}

最新文章

  1. 我的第一个FluentNHibernate例子
  2. 登录DA面板出现:License has expired
  3. yeoman的学习
  4. iOS开发——实战OC篇&amp;环境搭建之StoryBoard(玩转UINavigationController与UITabBarController)
  5. 项目源码--Android基于LBS地理位置信息应用的客户端
  6. spring中获取Bean
  7. CSS的基本认识
  8. html5 geolocation API
  9. javascript keycode
  10. .net dynamic动态加属性
  11. js 计算月/周的第一天和最后一天
  12. 【java设计模式】【行为模式Behavioral Pattern】模板方法模式Template Method Pattern
  13. jenkins入门系列之一 jenkins的安装
  14. Scrapy爬虫框架第七讲【ITEM PIPELINE用法】
  15. CentOS7桌面版系统使用的一些小技巧
  16. PostGIS计算矢量切片(一)--渲染数据
  17. Setting up Scatter for Web Applications
  18. 《Linux内核设计与分析》第六周读书笔记——第三章
  19. ASP.NET Core奇遇记:无用户访问,CPU却一直100%
  20. pyhton 学习 函数式编程

热门文章

  1. get_class_methods--返回由类的方法名组成的数组
  2. javax.servlet.jsp.JspException cannot be resolved to a type 和 javax.servlet.jsp.PageContext cannot be resolved to a type 解决办法
  3. jqgrid的scroll参数的使用
  4. Java -- JDBC 操作mysql数据库
  5. java创建多线程的三种方式
  6. nova instance启动中的同步与异步
  7. iis 设置 主机头,设置 host文件
  8. 在struts2.5版本中使用DMI遇到问题
  9. 简单CSS3动画
  10. Handsontable-一款仿 Excel效果的表格插件使用总结 96