zoukankan      html  css  js  c++  java
  • 求正整数n所有可能的和式的组合(如;4=1+1+1+1、1+1+2、1+3、2+1+1、2+2

    作者:张小二

    nyoj90 ,可以使用递归的方式直接计算个数,也可以通过把满足的个数求出来计数,因为在juLy博客上看到整数划分,所以重写了这个代码,就是列出所m的可能性,提交后正确。acmer的入门;

    正整数n表示成一系列正整数之和:n=n1+n2+…+nk,
    其中n1≥n2≥…≥nk≥1,k≥1。
    正整数n的这种表示称为正整数n的划分。求正整数n的不
    同划分个数。
    例如正整数6有如下11种不同的划分:
    6;
    5+1;
    4+2,4+1+1;
    3+3,3+2+1,3+1+1+1;
    2+2+2,2+2+1+1,2+1+1+1+1;
    1+1+1+1+1+1。

    #include<iostream>
    using namespace std;
    int a[30]={0};//保存分解的状况
    void fun(int a[],int lev,int left,int &count) //lev表示计算到数组的第几个,left剩余数的大小,count的目的是为了返回答案;
    {
        if(left<0) return;
        
    if(left==0&&lev!=1) // 因为题目要求中4分解不要4,所以lev=1的去掉
        {
        /*    for(int i=1;i<lev;i++)
            {
                cout<<a[i]<<"	";
            }
            cout<<endl;*/
            count++;
    
    
        
        }
        else
        {
            for(int i=1;i<=left;i++)
            {
                if(i>=a[lev-1])   //列出所有大于lev前一个数的可能性
                {
    
                    a[lev]=i;    
                    fun(a,lev+1,left-i,count);
                    
                
                    
                
                    
                
                
                
                }
            
            
            }
        
        
        }
    
    
    }
    int main()
    {
        int n;
        cin>>n;
        while(n--)
        {
            int ans=0;
    
            int tem;
            cin>>tem;
            fun(a,1,tem,ans);
            cout<<ans<<endl;
    
        
        
        }
        
    
        system("pause");
    
    
    
    return 0;
    }

  • 相关阅读:
    GPS精度因子(GDOP,PDOP,HDOP,VDOP,TDOP)
    VTD专题
    使用Python的Numpy 生成随机数列表
    Win10 下使用Ubuntu子系统
    Python依赖库查找
    使用技巧
    openstreetmap算路服务搭建
    笔记
    markdownpad
    缓和曲线09正弦一波型
  • 原文地址:https://www.cnblogs.com/hansongjiang/p/3772397.html
Copyright © 2011-2022 走看看