发布于 1970-01-01 08:00
  • 3 个回答
    • $a = [1,2,3,4,5,6,7,8,9];
      // 需要分片的大小
      $perSize = 2;
      
      $leader = array_shift($a);
      $bs = array_chunk($a, $perSize - 1);
      $bs = array_map(function ($item) use ($leader) {
          array_unshift($item, $leader);
          return $item;
      }, $bs);
      // 所有的 $b, 和 $b 的个数
      var_dump($bs, count($bs));
      
      2022-12-01 18:51 回答
    • 2022-12-01 18:51 回答
    • #include <stdio.h>
      
      int array[] = {1, 2, 3, 4, 5, 6, 7, 8, 9};
      int array2[9];
      int array2len = 0;
      
      void perm(int len, int index)
      {
          int i, j;
          if (array2len < len) {
              for (i = index; i < 9; i++) {
                  array2[array2len] = array[i];
                  array2len++;
                  perm(len, i + 1);
                  array2len--;
              }
          } else {
              for (j = 0; j < array2len; j++)
                  printf("%d", array2[j]);
              printf("\n");
          }
      }
      
      int main(int argc, char **argv)
      {
          int i;
      
          for (i = 2; i < 10; i++) {
              array2len = 0;
              perm(i, 0);
          }
      }
      

      我的思路是用递归,代码如上,C语言的。

      对了,要统计的话,有两个思路:一个是在上面的代码中加一些逻辑,在每次需要输出array2的时候统计;另一个是用组合数的计算公式直接计算,比如题中9个数字生成的所有组合共有502个,高中数学讲过。

      2022-12-01 18:51 回答
    撰写答案
    今天,你开发时遇到什么问题呢?
    立即提问
    PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
    Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有