java-zh 2023-04-23 21:23 采纳率: 77.8%
浏览 11
已结题

发票和单号进行分摊算法

求一个算法
我这里需要做一个发票报销和单号有关的分摊功能

场景:发票张数是n,报销单号是m,发票的金额和报销单号的金额一定是一致的,现在要进行分摊,比如五张发票对应三个单号,总金额为两万,发票号和发票金额分别为 (A001,5000)  (A002,4000) (A003,2000) (A004,6000)  (A005,3000)   三个单号分别为(B001,10000),
(B002,2000),(B003,8000)
希望产生的分摊轨迹
(A001,5000)  (B001,5000)
(A002,4000) (B001,4000)
(A003,1000) (B001,1000)
(A003,1000) (B002,1000)
(A004,1000) (B002,1000)
(A004,5000) (B003,5000)
(A005,3000) (B003,3000)

  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2023-04-24 12:32
    关注
    不知道你这个问题是否已经解决, 如果还没有解决的话:
    • 你可以看下这个问题的回答https://ask.csdn.net/questions/7735290
    • 这篇博客也不错, 你可以看下一种基于帧差分算法的简易视频报警算法的设计与实现
    • 除此之外, 这篇博客: 【算法和数据结构】排序算法全解析中的 选择排序的第一种写法【不稳定,破坏顺序结构】 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:

      选择排序的思想是:双重循环遍历数组,每经过一轮比较,找到最小元素的下标,将其交换至首位。

      public static void selectionSort_1(int[] arr)
      {
          int minIndex;//需要一个最小值索引下标
          for (int i = 0; i < arr.Length-1; i++) 
          {
              minIndex = i; //每一个位置的最小值从头开始
              for (int j = i+1; j < arr.Length; j++)
              {
                  if (arr[minIndex]>arr[j]) //当前最小值位置 > J位置
                  {
                      minIndex = j;//记录最新的最小值位置,循环结束后最后得出最小值位置
                  }
              }
              //交换当前位置和最小值位置
              arr[minIndex] = arr[minIndex] + arr[i];
              arr[i] = arr[minIndex] - arr[i]; //现在当前位置变为最小值
              arr[minIndex] = arr[minIndex] - arr[i]; //把原先的最小值位置交换到前面
          }
      }
      

      动图演示
      在这里插入图片描述
      冒泡排序和选择排序有什么异同?
      相同点:

      1. 都是两层循环,时间复杂度都为 O(n^2)
      2. 都只使用有限个变量,空间复杂度 O(1)

      不同点:

      1. 冒泡排序在比较过程中就不断交换;而选择排序增加了一个变量保存最小值 / 最大值的下标,遍历完成后才交换,减少了交换次数。
      2. 最重要的不同点:冒泡排序法是稳定的,选择排序法是不稳定的。

      【不稳定的例子】
      选择排序中,最小值和首位交换的过程可能会破坏稳定性。比如数列:[2, 2, 1],在选择排序中第一次进行交换时,原数列中的两个 2 的相对顺序就被改变了,因此,我们说选择排序是不稳定的。

    • 您还可以看一下 吴刚老师的【吴刚大讲堂】电商视觉的排版与应用方法课程中的 订单页面的表单视觉优化及细节处理方法小节, 巩固相关知识点

    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 5月8日
  • 已采纳回答 4月30日
  • 创建了问题 4月23日

悬赏问题

  • ¥15 winFrom界面无法打开
  • ¥15 crossover21 ARM64版本安装软件问题
  • ¥15 mymetaobjecthandler没有进入
  • ¥15 mmo能不能做客户端怪物
  • ¥15 osm下载到arcgis出错
  • ¥15 Dell g15 每次打开eiq portal后3分钟内自动退出
  • ¥200 使用python编写程序,采用socket方式获取网页实时刷新的数据,能定时print()出来就行。
  • ¥15 matlab如何根据图片中的公式绘制e和v的曲线图
  • ¥15 我想用Python(Django)+Vue搭建一个用户登录界面,但是在运行npm run serve时报错了如何解决?
  • ¥15 QQ邮箱过期怎么恢复?