⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 数的划分个数和分划情况.cpp

📁 acm中各种代码
💻 CPP
字号:
#include <stdio.h>

int q(int n ,int m ) 
{
if( n< 1 || m < 1) 
   return 0 ;
if( n== 1 || m == 1 )
   return 1 ;
if( n< m )
   return q(n , n );
if( n == m ) 
   return q(n ,m-1) +1 ;
return q(n, m-1 )+ q(n-m ,m );
}

int main() 
{ 
    int n; 
    while(scanf("%d", &n) )
    {

     printf("%d\n",q(n , n) ) ;
     printf("%d\n", n ) ;
       if (n == 1) 
    { 
          printf("1=1\n"); 
          continue; 
    } 

       if (n == 2) 
    { 
          printf("2=1+1\n"); 
           continue; 
    } 

       int *a = new int(n); 
       int top = 0; 

       a[0] = n - 1; 
       a[1] = 1; 
       top = 2; 

       int i; 
       do
    { 
           printf("%d=%d", n, a[0]); 
           for (i = 1; i < top; i++) 
     { 
              printf("+%d", a[i]); 
     } 
           printf("\n"); 

           int s = 0; 
           do
     { 
      top -- ;
               s += a[top]; 
     } while (top >= 0 && a[top] == 1);

           if (top == -1) 
     { 
              break; 
     } 

           int d = a[top] - 1; 
           if (d == 1) 
     { 
             while (s > 0) 
    { 
               a[top++] = 1; 
               s--; 
    } 
     } 
           else 
     { 
            do
      { 
                a[top++] = d; 
                s -= d; 
      } while (s >= d); 
            if (s != 0) 
      { 
                a[top++] = s; 
      } 
     } 
    }while (1); 
    }
    return 0 ;
} 

 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -