问题描述
从一个大小为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的范围

package algo115;import java.util.Iterator;
import java.util.LinkedList;
import java.util.Scanner;
import java.util.Stack;public class Main {public static void main(String[] args) {Scanner sc = new Scanner(System.in);n = sc.nextInt();isVisited = new boolean[n];nums = new int[n];for (int i = 0; i < n; i++) {nums[i] = sc.nextInt();}t = sc.nextInt();sc.close();dfs(n - 1, 0, new LinkedList(), true);while (!out.isEmpty()) {System.out.println(out.pop());}System.out.println(cnt);}private static int cnt = 0, n = 0, t = 0;private static boolean[] isVisited;private static int[] nums;private static Stack out = new Stack<>();private static void dfs(int pos, int tempT, LinkedList selectedNums, boolean isNone) {for (int i = pos; i >= 0; i--) {if (!isVisited[i]) {isVisited[i] = true;selectedNums.push(nums[i]);dfs(i - 1, tempT + nums[i], selectedNums, false);selectedNums.pop();isVisited[i] = false;}}if (tempT == t && !isNone) {out.push(toReulstString(selectedNums.iterator()));cnt++;}}private static String toReulstString(Iterator it) {StringBuilder result = new StringBuilder();while (it.hasNext()) {result.append(it.next() + " ");}return result.toString();}
}

[Java] 蓝桥杯ALGO-115 算法训练 和为T相关推荐

  1. 蓝桥杯:试题 算法训练 Remember the A La Mode

    蓝桥杯:试题 算法训练 Remember the A La Mode 资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述 Hugh Samston经营着一个为今年的ICPC世界总决赛的参 ...

  2. 矩阵乘法 算法训练 试题_蓝桥杯习题集_ 算法训练 矩阵乘法

    原文: 算法训练 矩阵乘法 时间限制:1.0s   内存限制:512.0MB 问题描述 输入两个矩阵,分别是m*s,s*n大小.输出两个矩阵相乘的结果. 输入格式 第一行,空格隔开的三个正整数m,s, ...

  3. java蓝桥杯的题_Java蓝桥杯试题集——算法训练ALGO-116——最大的算式

    题目要求 解题思路 动态规划,今天才弄明白QAQ,借鉴了这位大佬的博客,曹磊的博客 写的很好!但是我觉得我的循环方式更容易理解嘿嘿嘿~ 首先建立如下图的数组,行数代表前几位数,列数代表有几个乘号.将第 ...

  4. 蓝桥杯练习系统算法训练习题加答案java版本

    附上百度文库的链接:http://wenku.baidu.com/view/afb78d36b42acfc789eb172ded630b1c59ee9bf7 转载于:https://www.cnblo ...

  5. JAVA蓝桥杯:高精度算法

    问题描述 问题描述 输入两个整数a和b,输出这两个整数的和.a和b都不超过100位. 算法描述 由于a和b都比较大,所以不能直接使用语言中的标准数据类型来存储.对于这种问题,一般使用数组来处理. 定义 ...

  6. 蓝桥杯练习系统—算法训练 s01串

    第一部分:题目 问题描述 s01串初始为"0" 按以下方式变换 0变1,1变01 输入格式 1个整数(0~19) 输出格式 n次变换后s01串 样例输入 3 样例输出 101 数据 ...

  7. 蓝桥杯:试题 算法训练 采油区域 矩阵前缀和+动态规划+分治+枚举

    资源限制 时间限制:2.0s 内存限制:512.0MB 采油区域 Siruseri政府决定将石油资源丰富的Navalur省的土地拍卖给私人承包商以建立油井.被拍卖的整块土地为一个矩形区域,被划分为M× ...

  8. 蓝桥杯-黑色星期五(算法训练)

    题目描述: 有些西方人比较迷信,如果某个月的13号正好是星期五,他们就会觉得不太吉利,用古人的说法,就是"诸事不宜".请你编写一个程序,统计出在某个特定的年份中,出现了多少次既是1 ...

  9. 【算法】【蓝桥杯】试题 算法训练 黑心药商 ALGO-1002

    题目 资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述 JiaoShou消灭了百变怪,为爱琳世界赢得了和平,但他突然发现自己没有升级,这就意味着必须去喝药补血.爱琳世界的NPC卖的药已 ...

  10. JAVA 蓝桥杯 算法提高 阮小二买彩票

    JAVA 蓝桥杯 算法提高 阮小二买彩票 资源限制 时间限制:1.0s 内存限制:512.0MB 问题描述 在同学们的帮助下,阮小二是变的越来越懒了,连算账都不愿意自己亲自动手了,每天的工作就是坐在电 ...

最新文章

  1. bootstrap上传文件美化
  2. python excel web_使用python在WEB页面上生成EXCEL文件
  3. springmvc 传对象报400_源码导读:深入理解SpringMVC报400时的流程
  4. 成都Uber优步司机奖励政策(1月20日)
  5. 专升本c语言程序设计网课_2020年宜春学院专升本招生信息
  6. CBAC ftp测试
  7. 语义分割常用loss介绍——及pytorch实现
  8. 玩转python字体
  9. CMMI过程域-MA度量和分析
  10. Faster R-CNN理解、讨论
  11. 内推!字节、阿里、网易火热招聘中,内推优筛简历,快人一步拿offer,真香!(送内推码)...
  12. androidpn的学习研究(三)androidpn-server服务端几个类说明
  13. Echarts实现区级行政区划地图
  14. 惠普服务器ilo默认地址_使用ILO进行HP服务器管理的Docker容器
  15. OpenLayers动画效果显示路线
  16. 短视频运营的目标:引流并转化客户
  17. Python爬虫(6):比Selenium快100倍的方法爬东方财富网财务报表
  18. [笔记分享] [Power] MSM8x60 Power Management study report
  19. 栈和队列:魔王语言解释
  20. win10增加美式键盘

热门文章

  1. maven依赖avro_avro序列化详细操作
  2. Android学习小Demo(10)ToDoList的改进版之ViewPager显示多个图片
  3. 消息系统Kafka介绍
  4. ssh整合步骤之一(搭建环境)
  5. 洛谷3672:小清新签到题——题解
  6. mysql中的union用法以及子查询综合应用
  7. SharePoint 2013 Step by Step—— 为终端用户提供故障恢复的解决方案 Part I
  8. 让网站和APP更具动感的几点建议
  9. 英国国家网络安全中心:速修复严重的 MobileIron RCE 漏洞 (CVE-2020-15505)
  10. JAVA入门到精通-第16讲-数组