南极人探险 2021-12-28 09:31 采纳率: 87.5%
浏览 110
已结题

排序重构问题 用C/C++实现

令A为一个由N个已特殊排序数组成的数列:A1 A2 … AN,其中A1=0。令B为N(N-1)/2个数(定义为Bij=Ai-Aj(i>j))组成的数列。例如,A=0 1 5 8,那么D=1 3 4 5 7 8。请完成:

  1. 编写程序,根据A构造D;
    2)编写程序,构造与D相对应的某一个数列A,注意A不是唯一的。
  • 写回答

1条回答 默认 最新

  • bobhuang 2021-12-28 10:40
    关注

    题目应该是笔误了,莫名出现了D,似乎应该是B。那么按B来理解D,思路如下:

    1. 用两重循环, i=[N,2], j=[i-1,1], 求出所有Bij, 再按从小到大进行排序,构成数列B。
    2. 因为限定了A1=0, 所以B中最大数必然是AN,其他数必然存在成对出现的Bi + Bj = AN。找出N - 2对这样的数,每对取其中一个,再加上0和AN,就能构造出一个备选的数列A。再将备选数列按题设算法构造数列B'。如果B'与B一致,就可以判断当前的备选数列A满足条件。备选数列A的可能性有2^(N-2)种。

    以例子中的数据为例,
    8 = 1+7 = 3+5.
    如果取 1和5,就得到 0 1 5 8. 验证可以推导出 1 3 4 5 7 8. 匹配。
    如果取 3 和 7, 就得到 0 3 7 8. 验证可以推导出 1 3 4 5 7 8. 匹配。
    如果取1和3, 就得到 0 1 3 8. 验证推导出 1 2 3 5 7 8. 不匹配。
    如果取 7 和5 ,就得到 0 5 7 8, 验证推导出 1 2 3 5 7 8. 不匹配。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 1月5日
  • 已采纳回答 12月28日
  • 创建了问题 12月28日

悬赏问题

  • ¥15 对于这个问题的解释说明
  • ¥200 询问:python实现大地主题正反算的程序设计,有偿
  • ¥15 smptlib使用465端口发送邮件失败
  • ¥200 总是报错,能帮助用python实现程序实现高斯正反算吗?有偿
  • ¥15 对于squad数据集的基于bert模型的微调
  • ¥15 为什么我运行这个网络会出现以下报错?CRNN神经网络
  • ¥20 steam下载游戏占用内存
  • ¥15 CST保存项目时失败
  • ¥20 java在应用程序里获取不到扬声器设备
  • ¥15 echarts动画效果的问题,请帮我添加一个动画。不要机器人回答。