111lj 发表于 2014-11-30 16:10:26

小人 发表于 2014-11-30 16:38:02

链表吧

Potato丶 发表于 2014-11-30 17:03:43

a可以相邻吗。可以插到数组头或尾吗。

woaini92887 发表于 2014-11-30 17:09:39

问题都没有说清楚 怎么实现

111lj 发表于 2014-11-30 18:48:52

111lj 发表于 2014-11-30 18:50:09

Potato丶 发表于 2014-11-30 19:08:33

随便插的话个人感觉情况会很复杂{:7_114:}。这是啥题

Mr.屎壳螂 发表于 2014-12-1 23:23:02

随意插的话情况很多啊,虽然原理不难,但是情况很多..

520886 发表于 2014-12-3 07:25:26

10*10*10*10*10?

firefox_zyw 发表于 2014-12-4 02:03:31

本帖最后由 firefox_zyw 于 2014-12-4 02:07 编辑

题目是这样的:有一个数组里面有10个b,然后现在有5个a,把a插入b里面,最后有多少种排列,并把排列打印出来????想了好久,

思路:5个'a'和10个'b'不管怎么排列, 最后肯定落在如下的15个槽中:
          123456789101112131415
         虽然a和b有多个不唯一, 但槽具有唯一性, 与上面编号一 一对应.
         所以, 问题可转换成:
         从上面15个槽中选择5个槽用来放入'a'。这样能保证取出来的排列组合既互不相同又包含所有情形。
         根据排列组合原理结果应为:
         C 5(上标)15(下标) = (15 * 14 * 13 * 12 * 11) / (5 * 4 * 3 * 2 * 1) = 3003

编程:采用迭代思想,编写程序实现数学中的排列组合算法C m(上标)n(下标)
            void sort(int nPos, int m, int n);
                     int nPos;               //数组游标,标识当前正在处理的数组
                     int m;                   //m值,这里是5
                     int n;                  //n值,这里是10
          数据结构:
            const int list = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14};    //槽的编号

          过程:
            主程序调用:
                sort(0, m, n);      对list[]从0位置开始的数组(整个数组)打印排列组合 C m(上标)n(下标)的所有情况
                从0位置开始处理,分两种情况:
                1. 取0位置元素: 则后续需要从 (n-1)个元素中取出 (m-1)个元素,即:
                  sort(1, m-1, n-1);
                2. 不取0位置元素:则后续需要从 (n-1)个元素中取出 (m)个元素,即:
                  sort(1, m, n-1);
                sort函数不断迭代,且 m-1, n-1,不断收缩,当m,n趋于0时,迭代终止回溯。

代码:




王乐山 发表于 2014-12-4 20:25:08

能详细描述一下这个问题吗?
如果不明白 QQ联系我425947506
页: [1]
查看完整版本: 往数组里面插数,怎么破??c语言实现