1 条题解

  • 0
    @ 2024-12-24 9:54:30

    C++ :

    #include <iostream>
    using namespace std;
    #define Max 100
    int n,m;//n个数中选出若干数,总和为m
    int v[Max];//标记n个数是否被选,1选,0不选
    void f(int k,int sum)
    {
    	int i;
    	if(k>n||sum<0) return;//剪枝
    	if(sum==0)
    	{
    		for(i=0;i<k;i++)
    			if(v[i]) cout<<i+1<<' ';
    		cout<<endl;
    		return;
    	}	
    	v[k]=0;//不选第k号
    	f(k+1,sum);//递归
    	v[k]=1;//选第k号
    	f(k+1,sum-k-1);//递归
    }
    int main()
    {
    	cin>>n>>m;
    	f(0,m);
        return 0;
    }
    
    
    • 1

    信息

    ID
    1178
    时间
    1000ms
    内存
    128MiB
    难度
    (无)
    标签
    递交数
    0
    已通过
    0
    上传者