/*
 某财务部门结账时发现总金额不对头。很可能是从明细上漏掉了某1笔或几笔。如果已知明细账目
 清单,能通过编程找到漏掉的是哪1笔或几笔吗?
 如果有多种可能,则输出所有可能的情况。
 我们规定:用户输入的第一行是:有错的总金额。
 接下来是一个整数n,表示下面将要输入的明细账目的条数。
 再接下来是n行整数,分别表示每笔账目的金额。
 要求程序输出:所有可能漏掉的金额组合。每个情况1行。金额按照从小到大排列,中间用空格分开。
 比如:
 用户输入:
 6
 5
 3
 2
 4
 3
 1
 表明:有错的总金额是6;明细共有5笔。
 此时,程序应该输出:
 1 3 3
 1 2 4
 3 4
 为了方便,不妨假设所有的金额都是整数;每笔金额不超过1000,金额的明细条数不超过100。
 要求考生把所有类写在一个文件中。调试好后,存入与考生文件夹下对应题号的“解答.txt”中
 即可。相关的工程文件不要拷入。请不要使用package语句。
 另外,源程序中只能出现JDK1.5中允许的语法或调用。不能使用1.6或更高版本。
 */

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Scanner;
public class FinaceCheck {
public static void play(int n, int limit, int sum, String tempStr,
ArrayList<String> memoryList, int array[]) {
if (sum > limit)
return;
if (sum == limit && !memoryList.contains(tempStr)) {// 满足条件
System.out.println(tempStr);
memoryList.add(tempStr);
return;
}
for (int i = n; i < array.length; i++) {
tempStr += array[i] + " ";// 加空格为了数字间的空格加空格
sum += array[i];
int len = (array[i] + " ").length();
play(i + 1, limit, sum, tempStr, memoryList, array);// 递归调用
tempStr = tempStr.substring(0, tempStr.length() - len);// 还原
sum -= array[i];// 还原
}
}
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
int sum = 0; // 总额
int restMoney = input.nextInt();
int m = input.nextInt();
int[] array = new int[m];
for (int i = 0; i < array.length; i++) {
array[i] = input.nextInt();
sum += array[i];
}
Arrays.sort(array);// 排序数组
int limit = sum - restMoney;// 求差额
play(0, limit, 0, "", new ArrayList<String>(), array);
}
}

java2012国信蓝点杯全国软件设计大赛编程大题相关推荐

  1. 2012国信蓝点杯全国软件设计大赛编程大题

    从键盘读入一个由字母构成的串(不大于30个字符). 从该串中取出3个不重复的字符,求所有的取法. 取出的字符,要求按字母升序排列成一个串. 不同的取法输出顺序可以不考虑. 例如: 输入: abc 则输 ...

  2. 2011国信蓝点杯全国软件设计大赛编程大题

    /*  * 看下面的算式:  □□ x □□ = □□ x □□□  它表示:两个两位数相乘等于一个两位数乘以一个三位数.  如果没有限定条件,这样的例子很多.  但目前的限定是:这9个方块,表示1~ ...

  3. 2012第三届国信蓝点杯全国软件设计大赛编程大题

    * 题目  *  为了保障社会秩序,保护人民群众生命财产安全,警察叔叔需要  *  与罪犯斗智斗勇,因而需要经常性地进行体力训练和智力训练!  *  某批警察叔叔正在进行智力训练:  *  1 2 3 ...

  4. 2011国信蓝点杯全国软件设计大赛

    /*  公司发了某商店的购物券1000元,限定只能购买店中的m种商品.每种  商品的价格分别为m1,m2,-,要求程序列出所有的正好能消费完该购物券的不同购物方法.  程序输入:  第一行是一个整数m ...

  5. 首届“中科杯”全国软件设计大赛拉开帷幕

    4月29日,中国科学院软件研究所隆重召开新闻发布会,中国软件行业协会理事长陈冲.中科院软件所副所长黄涛共同宣布了两家单位联合主办的首届"中科杯"全国软件设计大赛正式开赛.此次大赛面 ...

  6. 关于第二界“中科杯”全国软件设计大赛

    “中科杯”全国软件设计大赛是中国科学院软件研究所于2009年发起,中国软件行业协会和中国科学院软件研究所共同主办的一项面向中国大陆和港澳台地区在校青年学生的公益性质的全国性软件设计大赛.旨在“大力发展 ...

  7. 2011 模拟 c语言 本科(含答案)(第二届“国信蓝点杯”全国软件专业人才设计与开发大赛)...

    本文地址:http://www.cnblogs.com/CheeseZH/archive/2012/04/06/2435134.html 2011 模拟 c语言 本科 注意: 本套模拟题主要模拟命题形 ...

  8. “中科杯”全国软件设计大赛决赛实录

    果然每个队伍占用的时间都太长了,导致我五点多饿着肚子去答辩.当然了,评委也是辛辛苦苦饿着肚子的. 估计就我一个学数学的吧,我一开始还特意强调了一下,就一个目的,希望评委别问我太专业的问题--我不会.而 ...

  9. 第九届“中国软件杯”大学生软件设计大赛总决赛落幕

    11月3-5日,第九届"中国软件杯"大学生软件设计大赛(以下简称大赛)总决赛在江苏常州圆满举办.经过九年积累,大赛已经吸引包括全部985.211高校在内的千余所院校.数万支团队.二 ...

最新文章

  1. 继续过中等难度.0309
  2. Enterprise Library 2.0 技巧(3):记录ASP.NET站点中未处理的异常
  3. JavaEE配置工具
  4. ThinkPHP模板之二
  5. 十二、Linux系统编程中man命令的使用
  6. Spring的异步方法
  7. RBAC 权限设计(转载)
  8. 会议交流 | IJCKG 2021:Keynotes released!欢迎注册参会
  9. mysql 矩表_mysql表某相同值最近一次出现的间距
  10. css学习----边框属性
  11. 手机数控模拟器安卓版_数控模拟器手机版下载-数控模拟器安卓手机版v1.1.4-河东软件园...
  12. PROFINET协议
  13. 凹点匹配 matlab源码,基于凹点搜索的重叠粉体颗粒的自动分离算法
  14. GRMS_README
  15. php 打印出心形,利用php输出不同的心形图案_PHP
  16. CTGU实验5_1-创建还书过程中的触发器
  17. 正则表达式(常用正则表达式)
  18. EasyRecovery五个步骤搞定数据恢复
  19. 花开不败——复旦中文系女生的高三笔记
  20. ITE 在vs下可以模拟,在ite下无法编译

热门文章

  1. QT修改应用图标,给按钮添加监听器
  2. 局域网访问mysql
  3. <script type=“text/html“>是怎么回事?
  4. java导出复杂excel
  5. 微观经济学--经济学十大原理
  6. 幼儿园分班问题 【Java】
  7. 外航空姐异国情感生活:空姐之恋
  8. 23 种设计模式的有趣见解
  9. NSDNA:神经系统疾病相关的ncRNA数据库
  10. 计算机ct检查,影像学检查之三 CT(计算机体层)