• 组合(1-m中选n个数)


    #include<stdio.h>
    int a[100],b[100]={0},m,n;
    bool p(int k)//定义一个bool类型函数 ,用来判断
    {
    if(b[k]==1)
    {
    return false;
    }
    return true;
    }
    void s(int k)//定义一个函数,用来回溯;
    {

    for(int i=a[k-1];i<=m;i++)
    {
    a[k]=i;//将i填进数组里
    if(p(i))// 判定i是否用过
    {
    b[i]=1;//标记
    if(k==n)//如果填完了
    {
    for(int j=1;j<=n;j++)//输出
    {
    printf("%d ",a[j]);
    }
    printf(" ");
    }
    else
    {
    s(k+1);//调用自己
    }
    b[i]=0;//取消标记
    }
    }
    a[k]=0;//归零
    }
    int main()
    {
    scanf("%d%d",&m,&n);//输入m,n;
    for(int i=1;i<=m;i++)//定义第一个数
    {
    a[1]=i;
    b[i]=1;
    s(2);
    }

    return 0;
    }

    hahahahahahaha

  • 相关阅读:
    继承作业0920
    类与对象
    类和对象基础题
    类和对象数组
    数组
    字符串
    2.1面向对象
    7.1 Java集合概述
    Java动态代理的两种实现方法
    18.5.2动态代理和AOP
  • 原文地址:https://www.cnblogs.com/lldsidi/p/5815151.html
Copyright © 2020-2023  润新知