T3——拆分自然数
Posted -iris-
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了T3——拆分自然数相关的知识,希望对你有一定的参考价值。
#include<iostream> #include<cstdio> using namespace std; int a[105];//以数组的的形式记录拆分,便于接下来的搜索与回溯 bool b[100]={0}; int n; int tot=0; void search(int,int); void print(int); int main(void) { freopen("Distribution.in","r",stdin); freopen("Distribution.out","w",stdout); scanf("%d",&n); search(1,n); printf("%d",tot); } void print(int g)//输出函数 // { printf("%d=",n); cout<<a[1]; for(int i=2;i<=g;i++) printf("+%d",a[i]); cout<<‘ ‘; } void search(int x,int y)//search表示我们在小于 y 的范围内选取第 x 个数字 //选取数字规则按照字典序 //所以我们优先选小的数字 每个数字必须小于或者等于前一个数字 //依次递归可得 //当我们选取当前数字之后将y的范围缩小防止 //以后与我们之前选择的数列重复 //之后输出方案数++ { for(int i=1;i<=n;i++) { if(i==n) break; if(i>=a[x-1]&&i<=y) { a[x]=i; if(y-i==0) print(x),tot++/*Copy(x,tot)*/; else search(x+1,y-i); } } }
-end-
以上是关于T3——拆分自然数的主要内容,如果未能解决你的问题,请参考以下文章
为啥将拆分为 wav 文件的旋律转换为拆分的 mp3 会在片段边界处产生不好的声音?