漏掉的账目明细
来源:互联网 发布:韩国淘宝模特孙允珠 编辑:程序博客网 时间:2024/04/29 00:34
漏掉的账目明细
某财务部门结账时发现总金额不对头。很可能是从明细上漏掉了某1笔或几笔。
如果已知明细账目清单,能通过编程找到漏掉的是哪1笔或几笔吗?
如果有多种可能,则输出所有可能的情况。
我们规定:用户输入的第一行是:有错的总金额。
接下来是一个整数n,表示下面将要输入的明细账目的条数。
再接下来是n行整数,分别表示每笔账目的金额。
要求程序输出:所有可能漏掉的金额组合。每个情况1行。金额按照从小到大排列,中间用空格分开。
比如:
用户输入:
6
5
3
2
4
3
1
表明:有错的总金额是6;明细共有5笔。
此时,程序应该输出:
1 3 3
1 2 4
3 4
为了方便,不妨假设所有的金额都是整数;每笔金额不超过1000,金额的明细条数不超过100。
package marslin;import java.util.Arrays;import java.util.Scanner;import java.util.Vector;import java.util.concurrent.PriorityBlockingQueue;import javax.swing.text.AbstractDocument.BranchElement;public class 漏掉的账目明细27 {public static String elementOfPriorityBlockingQueue(int array[],boolean used[]) {PriorityBlockingQueue<Integer> priorityBlockingQueue = new PriorityBlockingQueue<Integer>();for (int i = 0; i < used.length; i++) {if (used[i] == true) {priorityBlockingQueue.add(array[i]);}}StringBuffer sb = new StringBuffer();while (!priorityBlockingQueue.isEmpty()) {sb.append(priorityBlockingQueue.poll());}return sb.toString();}public static void exeForward(PriorityBlockingQueue<String> priorityBlockingQueue, int array[],boolean used[], int index, int sum, int tSum) {if (sum > tSum) {return;}if (sum == tSum) {String string = elementOfPriorityBlockingQueue(array, used);if (!priorityBlockingQueue.contains(string)) {priorityBlockingQueue.add(string);}return;}if (index <= array.length - 1) {for (int i = 0; i <= 1; i++) {used[index] = (i == 0 ? false : true);sum += array[index] * i;exeForward(priorityBlockingQueue, array, used, index + 1, sum,tSum);sum -= array[index] * i;used[index] = (i == 1 ? false : true);}} else {return;}}public static void main(String[] args) {int tSum;int n;Vector<Integer> vector = new Vector<Integer>();Scanner scanner = new Scanner(System.in);PriorityBlockingQueue<String> priorityBlockingQueue = new PriorityBlockingQueue<String>();tSum = scanner.nextInt();n = scanner.nextInt();int array[] = new int[n];boolean used[] = new boolean[n];tSum *=(-1);for (int i = 0; i < n; i++) {array[i] = scanner.nextInt();tSum += array[i];}exeForward(priorityBlockingQueue, array, used, 0, 0, tSum);while (!priorityBlockingQueue.isEmpty()) {String string = priorityBlockingQueue.poll();for (int i = 0; i < string.length(); i++) {System.out.print(string.charAt(i));if (i != string.length() - 1) {System.out.print(" ");}}System.out.println();}}}
0 0
- 漏掉的账目明细
- 蓝桥杯 漏掉的账目明细 DFS搜索 数据处理
- 蓝桥杯——漏掉的账目
- 某财务部门结账时发现总金额不对头。很可能是从明细上漏掉了某1笔或几笔。 如果已知明细账目清单,能通过编程找到漏掉的是哪1笔或几笔吗?
- 金额查错:某财务部门结账时发现总金额不对头。很可能是从明细上漏掉了某1笔或几笔, 如果已知明细账目清单,能通过编程找到漏掉的是哪1笔或几笔吗?
- 漏掉的账目(用C语言去重)
- 【数据库】DSN明细账目
- 趣味编程题——漏掉的账目(C语言编写)
- 买不到的账目
- 买不到的账目数 数论
- 捐款的企业明细
- oracle找出sequence漏掉的数字
- 你可能漏掉的知识点: onResumeFragments
- 你可能漏掉的知识点: onResumeFragments
- 你可能漏掉的知识点: onResumeFragments
- 盘点高薪大牌的票房账目 周润发张柏芝惨成毒药
- BACnet相关的产品明细
- 某财务部门结账时发现总金额不对头。很可能是从明细上漏掉了某1笔或几笔 递归算法
- iOS开发-------UIAlertController(弹出视图控制器)
- 1. rust的优点
- 第一范式、第二范式、第三范式
- 小强的HTML5移动开发之路(14)——Video标签详解
- 自动上传FTP服务器的shell脚本
- 漏掉的账目明细
- 关于弹出层或是窗口的几种方式
- dataTable将每一行封装一个实体对象
- Nim 中的参数传递
- oracle 语句理解 (-)
- 栈
- 实现Solr索引数据存放到HDFS下
- 获取上传文件的大小ele.files[0].size
- QT中的信号与槽的相关知识