N—E—E 2021-11-30 15:26 采纳率: 59.5%
浏览 41
已结题

这个求所有组合数的问题的输出为什么会有重复?

问题遇到的现象和发生背景

题目截了个图,输出格式不用管,按照回溯算法写的,不知道哪里出问题了导致输出有重复
![img](

https://img-mid.csdnimg.cn/release/static/image/mid/ask/358820752836186.png "#left")

问题相关代码,请勿粘贴截图

#include <stdio.h>
#include <string.h>
int oneresult[10];
//int results[100][10];
int num = 0;
//int results_num = 0;
void combine(int n, int k, int startindex){
    if (num == k)
    {
        for (int i = 0; i < k; i++)
        {
            if (oneresult[i]) printf("%d",oneresult[i]);
        }
        printf("\n");
        return;
    }
    for (int i = startindex; i < n; i++)
    {
        oneresult[num++] = i+1;
        combine(n,k,startindex+1);
        oneresult[num--] = 0;
    }
}

int main()
{
    int n,k;
    //memset(results,0,sizeof(results));
    memset(oneresult,0,sizeof(oneresult));
    scanf("%d %d",&n,&k);
    combine(n,k,0);
    //for (int i = 0; i < 100; i++)
    //{
    //    for (int j = 0; j < 10; j++)
    //    {
    //        if (results[i][j]) printf("%d",results[i][j]);
    //    }
    //    printf("\n");
    //}
    system("pause");
    return 0;
}

运行结果及报错内容

img

  • 写回答

2条回答 默认 最新

  • togolife 2021-12-01 00:09
    关注

    第20行传入startindex+1时应该传入i+1,下一个递归的起点是i + 1,这样就不会重复了

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 12月9日
  • 已采纳回答 12月1日
  • 创建了问题 11月30日

悬赏问题

  • ¥30 自适应 LMS 算法实现 FIR 最佳维纳滤波器matlab方案
  • ¥15 lingo18勾选global solver求解使用的算法
  • ¥15 全部备份安卓app数据包括密码,可以复制到另一手机上运行
  • ¥15 Python3.5 相关代码写作
  • ¥20 测距传感器数据手册i2c
  • ¥15 RPA正常跑,cmd输入cookies跑不出来
  • ¥15 求帮我调试一下freefem代码
  • ¥15 matlab代码解决,怎么运行
  • ¥15 R语言Rstudio突然无法启动
  • ¥15 关于#matlab#的问题:提取2个图像的变量作为另外一个图像像元的移动量,计算新的位置创建新的图像并提取第二个图像的变量到新的图像