/*
 某财务部门结账时发现总金额不对头。很可能是从明细上漏掉了某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. 网络正常,但是网络图标上有黄色的三角图标
  2. 互联网高并发架构设计模式
  3. HTTP,FTP,TCP,UDP及SOCKET
  4. bigdecimal取小数部分_Java中BigDecimal保留两位小数点有哪些方法
  5. 深圳.NET俱乐部 Windows 7 社区发布会总结及资源下载
  6. 2021阿里云“API满意度”调研
  7. echarts 生成 迁徙图_echarts3 迁徙图 迁入迁出(示例代码)
  8. Domino邮件服务器防垃圾邮件中转
  9. cv::Mat ptr 和 at 注意事项
  10. 三菱fx2n做从站的modbus通讯_三菱FX2N与昆仑通态(MCGS)无线编程口通讯例程
  11. 截取一段字符串中,两个指定字符串中间的字符串
  12. 基于HTML5+JavaScript+CSS3+PHP的网上商城电子商务购物网站设计
  13. Hosts文件拒绝访问
  14. android 5.1感叹号,关于5.1 WIFI显示感叹号
  15. iOS生产力之小工具合集
  16. 《当程序员的那些狗日日子》一
  17. 解决Ubuntu强制获取root权限后只剩下客人会话而无法正常登录
  18. 使用python将任意张图片拼接成多张大图
  19. 西门子S7-200SMART控制步进电机(五)
  20. VPN(Virtual privacte network)浅谈

热门文章

  1. 一种 低噪声放大器 电路结构
  2. 关于低噪声放大器的ADS设计和仿真
  3. web scraper 入门到精通之路
  4. Qt安装时No suitable kits found解决办法
  5. 开源的基于springboot的智慧物业管理系统
  6. .NET框架设计(高级框架架构模式)—钝化程序、逻辑冻结、冻结程序的延续、瞬间转移
  7. 零基础如何系统学习Python?Python入门必看
  8. 【python爬虫】selenium爬取淘宝商品图片
  9. 高考考日语学计算机,高中学日语对考大学有什么影响?很多专业限制日语生吗?...
  10. CAD图块:什么是动态块?CAD动态块怎么使用?