user-0 提问: 求从1到n中选择5个数，求其非递减序的排列个数

回复:
user: user-1
content: //http://bbs.csdn.net/topics/390667169 //1到1中选5个数：1 //11111 //共1种， //1到2中选5个数：12 2 2 2 2 //11111                   A //11112 //11122 //11222 //12222 //22222 //共6种， //1到3中选5个数：123 23 3 23 3 3 23 3 3 3 233333 //11111                                   A //11112 //11113 //11122 //11123 //11133 //11222 //11223 //11233 //11333 //12222 //12223 //12233 //12333 //13333 //22222 //22223 //22233 //22333 //23333 //33333 //共21种， //1到4中选5个数：1234 234 34 4 234 34 4 34 4 4 234 34 4 34 4 4 34 4 4 4  234 34 4 34 4 4 34 4 4 4 344444 //11111                                                                  A //11112 //11113 //11114 //11122 //11123 //11124 //11133 //11134 //11144 //11222 //11223 //11224 //11233 //11234 //11244 //11333 //11334 //11344 //11444 //12222 //12223 //12224 //12233 //12234 //12244 //12333 //12334 //12344 //12444 //13333 //13334 //13344 //13444 //14444 //22222 //22223 //22224 //22233 //22234 //22244 //22333 //22334 //22344 //22444 //23333 //23334 //23344 //23444 //24444 //33333 //33334 //33344 //33444 //34444 //44444 //共56种， //1到5中选5个数：12345 2345 345 45 5 2345 345 45 5 345 45 5 45 5 5 2345 345 45 5 345 45 5 45 5 5 345 45 5 45 5 5 45 5 5 5  2345 345 45 5 345 45 5 45 5 5 345 45 5 45 5 5 45 5 5 5 345 45 5 45 5 5 45 5 5 5 455555 //11111                                                                                                                    A //11112 //11113 //11114 //11115 //11122 //11123 //11124 //11125 //11133 //11134 //11135 //11144 //11145 //11155 //11222 //11223 //11224 //11225 //11233 //11234 //11235 //11244 //11245 //11255 //11333 //11334 //11335 //11344 //11345 //11355 //11444 //11445 //11455 //11555 //12222 //12223 //12224 //12225 //12233 //12234 //12235 //12244 //12245 //12255 //12333 //12334 //12335 //12344 //12345 //12355 //12444 //12445 //12455 //12555 //13333 //13334 //13335 //13344 //13345 //13355 //13444 //13445 //13455 //13555 //14444 //14445 //14455 //14555 //15555 //22222 //22223 //22224 //22225 //22233 //22234 //22235 //22244 //22245 //22255 //22333 //22334 //22335 //22344 //22345 //22355 //22444 //22445 //22455 //22555 //23333 //23334 //23335 //23344 //23345 //23355 //23444 //23445 //23455 //23555 //24444 //24445 //24455 //24555 //25555 //33333 //33334 //33335 //33344 //33345 //33355 //33444 //33445 //33455 //33555 //34444 //34445 //34455 //34555 //35555 //44444 //44445 //44455 //44555 //45555 //55555 //共126种， //1到6中选5个数：123456 23456 3456 456 56 6 23456 3456 456 56 6 3456 456 56 6 456 56 6 56 6 6 23456 3456 456 56 6 3456 456 56 6 456 56 6 56 6 6 3456 456 56 6 456 56 6 56 6 6 456 56 6 56 6 6 56 6 6 6  23456 3456 456 56 6 3456 456 56 6 456 56 6 56 6 6 3456 456 56 6 456 56 6 56 6 6 456 56 6 56 6 6 56 6 6 6 3456 456 56 6 456 56 6 56 6 6 456 56 6 56 6 6 56 6 6 6 456 56 6 56 6 6 56 6 6 6 566666 //11111                                                                                                                                                                                                 A //11112 //11113 //11114 //11115 //11116 //11122 //11123 //11124 //11125 //11126 //11133 //11134 //11135 //11136 //11144 //11145 //11146 //11155 //11156 //11166 //11222 //11223 //11224 //11225 //11226 //11233 //11234 //11235 //11236 //11244 //11245 //11246 //11255 //11256 //11266 //11333 //11334 //11335 //11336 //11344 //11345 //11346 //11355 //11356 //11366 //11444 //11445 //11446 //11455 //11456 //11466 //11555 //11556 //11566 //11666 //12222 //12223 //12224 //12225 //12226 //12233 //12234 //12235 //12236 //12244 //12245 //12246 //12255 //12256 //12266 //12333 //12334 //12335 //12336 //12344 //12345 //12346 //12355 //12356 //12366 //12444 //12445 //12446 //12455 //12456 //12466 //12555 //12556 //12566 //12666 //13333 //13334 //13335 //13336 //13344 //13345 //13346 //13355 //13356 //13366 //13444 //13445 //13446 //13455 //13456 //13466 //13555 //13556 //13566 //13666 //14444 //14445 //14446 //14455 //14456 //14466 //14555 //14556 //14566 //14666 //15555 //15556 //15566 //15666 //16666 //22222 //22223 //22224 //22225 //22226 //22233 //22234 //22235 //22236 //22244 //22245 //22246 //22255 //22256 //22266 //22333 //22334 //22335 //22336 //22344 //22345 //22346 //22355 //22356 //22366 //22444 //22445 //22446 //22455 //22456 //22466 //22555 //22556 //22566 //22666 //23333 //23334 //23335 //23336 //23344 //23345 //23346 //23355 //23356 //23366 //23444 //23445 //23446 //23455 //23456 //23466 //23555 //23556 //23566 //23666 //24444 //24445 //24446 //24455 //24456 //24466 //24555 //24556 //24566 //24666 //25555 //25556 //25566 //25666 //26666 //33333 //33334 //33335 //33336 //33344 //33345 //33346 //33355 //33356 //33366 //33444 //33445 //33446 //33455 //33456 //33466 //33555 //33556 //33566 //33666 //34444 //34445 //34446 //34455 //34456 //34466 //34555 //34556 //34566 //34666 //35555 //35556 //35566 //35666 //36666 //44444 //44445 //44446 //44455 //44456 //44466 //44555 //44556 //44566 //44666 //45555 //45556 //45566 //45666 //46666 //55555 //55556 //55566 //55666 //56666 //66666 //共252种， //1到7中选5个数： //…… //从1到n中选5个数，求其非递减序可重复数字的排列的个数 #include <stdio.h> int data[8]; int count(int b) {     int k,r;     r=0;     for (k=0;k<b-2;k++) r+=data[k];     return r; } int sum1to(int m) {     return (1+m)*m/2; } int main() {     int n,t,i,j,d;      data[0]=6;     for (d=1;d<=7;d++) {         t=0;         for (i=d+2;i>=1;i--) {             for (j=i;j>=1;j--) {                 t=t+sum1to(j);             }         }         data[d]=t;     }     while (1) {         printf("Input n(1..9):");fflush(stdout);         rewind(stdin);         scanf("%d",&n);         if (1<=n && n<=9) break;     }     if (n==1) t=1;     else if (n==2) t=data[0];     else if (n>2) t=data[n-2]+count(n);     printf("%d\n",t);     return 0; } //Input n(1..9):1 //1 //Input n(1..9):2 //6 //Input n(1..9):3 //21 //Input n(1..9):4 //56 //Input n(1..9):5 //126 //Input n(1..9):6 //252 //Input n(1..9):7 //462 //Input n(1..9):8 //792 //Input n(1..9):9 //1287 //

user: user-1
content: n=4时咋办？！

user: user-2
content: 个数就是从n中取5的组合数（C(n, 5)）。  引用 楼主 wxyztuv 的回复:求从1到n中选择5个数，求其非递减序的排列个数，例如，从1到10中，选择5个数，求其非递减序的排列个数，(数字不能重复，例如，123455,是不行的) 请问计算公式是什么，我用递归计算太慢了，当n很大时，例如p(100,5),所以，想知道有没有一个计算公式，可以很快计算出其个数，只需要计算出个数来就OK。

user: user-1
content: 自己总结规律 或参考《排列组合》、《概率论与数理统计》 或写个递归程序  “给定一个小点的输入，完整单步跟踪(同时按Alt+7键查看Call Stack里面从上到下列出的对应从里层到外层的函数调用历史)一遍。”是理解递归函数工作原理的不二法门！ 递归函数关注以下几个因素 ·退出条件 ·参数有哪些 ·返回值是什么 ·局部变量有哪些 ·全局变量有哪些 ·何时输出 ·会不会导致堆栈溢出

user: user-0
content: 引用 10 楼 zhao4zhong1 的回复:1到1中选5个数: 11111 共1种， 1到2中选5个数： 11111 11112 11122 11222 12222 22222 共6种， 1到3中选5个数： 11111 11112 11113 11122 11123 11133 11222 11223 11233 11333 12222 12223 12233 12333 13333 22222 22223 22233 22333 23333 33333 共21种， 1到4中选5个数： ……   我知道这样，我想知道通用的计算公式是什么，例如我想求从1到100中选8个数，用程序遍历求个数太慢了。 问题：从1到n中选m个数，求其非递减序可重复数字的排列的个数

user: user-1
content: 1到1中选5个数: 11111 共1种， 1到2中选5个数： 11111 11112 11122 11222 12222 22222 共6种， 1到3中选5个数： 11111 11112 11113 11122 11123 11133 11222 11223 11233 11333 12222 12223 12233 12333 13333 22222 22223 22233 22333 23333 33333 共21种， 1到4中选5个数： ……

user: user-0
content: 引用 8 楼 turingo 的回复:不需要减才对。  [quote=引用 7 楼 wxyztuv 的回复:] [quote=引用 6 楼 turingo 的回复:] n的5次方左右。  [quote=引用 5 楼 wxyztuv 的回复:] [quote=引用 1 楼 turingo 的回复:] 个数就是从n中取5的组合数（C(n, 5)）。  [quote=引用 楼主 wxyztuv 的回复:] 求从1到n中选择5个数，求其非递减序的排列个数，例如，从1到10中，选择5个数，求其非递减序的排列个数，(数字不能重复，例如，123455,是不行的) 请问计算公式是什么，我用递归计算太慢了，当n很大时，例如p(100,5),所以，想知道有没有一个计算公式，可以很快计算出其个数，只需要计算出个数来就OK。[/quote]  如果可以重复，怎么求，例如，可以是12222,123455等，要求个数，如何求？[/quote][/quote]  我一开始想的是用n^5 减去它的排列，即 n^5 - p(n,5),即 不排序不唯一 减去 不排序唯一，但是结果似乎是错的。[/quote][/quote]  是求可重复数字的非递减序排列，如果不减，那只是求了可重复的排列吧，例如n个中选5个，可重复递减序，12344   12222 是可以的，但是 14333   12354就不行了，因为它们中有数字递减了。如何求？

user: user-2
content: 不需要减才对。  引用 7 楼 wxyztuv 的回复:[quote=引用 6 楼 turingo 的回复:] n的5次方左右。  [quote=引用 5 楼 wxyztuv 的回复:] [quote=引用 1 楼 turingo 的回复:] 个数就是从n中取5的组合数（C(n, 5)）。  [quote=引用 楼主 wxyztuv 的回复:] 求从1到n中选择5个数，求其非递减序的排列个数，例如，从1到10中，选择5个数，求其非递减序的排列个数，(数字不能重复，例如，123455,是不行的) 请问计算公式是什么，我用递归计算太慢了，当n很大时，例如p(100,5),所以，想知道有没有一个计算公式，可以很快计算出其个数，只需要计算出个数来就OK。[/quote]  如果可以重复，怎么求，例如，可以是12222,123455等，要求个数，如何求？[/quote][/quote]  我一开始想的是用n^5 减去它的排列，即 n^5 - p(n,5),即 不排序不唯一 减去 不排序唯一，但是结果似乎是错的。[/quote]

user: user-0
content: 引用 6 楼 turingo 的回复:n的5次方左右。  [quote=引用 5 楼 wxyztuv 的回复:] [quote=引用 1 楼 turingo 的回复:] 个数就是从n中取5的组合数（C(n, 5)）。  [quote=引用 楼主 wxyztuv 的回复:] 求从1到n中选择5个数，求其非递减序的排列个数，例如，从1到10中，选择5个数，求其非递减序的排列个数，(数字不能重复，例如，123455,是不行的) 请问计算公式是什么，我用递归计算太慢了，当n很大时，例如p(100,5),所以，想知道有没有一个计算公式，可以很快计算出其个数，只需要计算出个数来就OK。[/quote]  如果可以重复，怎么求，例如，可以是12222,123455等，要求个数，如何求？[/quote][/quote]  我一开始想的是用n^5 减去它的排列，即 n^5 - p(n,5),即 不排序不唯一 减去 不排序唯一，但是结果似乎是错的。

user: user-2
content: n的5次方左右。  引用 5 楼 wxyztuv 的回复:[quote=引用 1 楼 turingo 的回复:] 个数就是从n中取5的组合数（C(n, 5)）。  [quote=引用 楼主 wxyztuv 的回复:] 求从1到n中选择5个数，求其非递减序的排列个数，例如，从1到10中，选择5个数，求其非递减序的排列个数，(数字不能重复，例如，123455,是不行的) 请问计算公式是什么，我用递归计算太慢了，当n很大时，例如p(100,5),所以，想知道有没有一个计算公式，可以很快计算出其个数，只需要计算出个数来就OK。[/quote]  如果可以重复，怎么求，例如，可以是12222,123455等，要求个数，如何求？[/quote]

user: user-0
content: 引用 1 楼 turingo 的回复:个数就是从n中取5的组合数（C(n, 5)）。  [quote=引用 楼主 wxyztuv 的回复:] 求从1到n中选择5个数，求其非递减序的排列个数，例如，从1到10中，选择5个数，求其非递减序的排列个数，(数字不能重复，例如，123455,是不行的) 请问计算公式是什么，我用递归计算太慢了，当n很大时，例如p(100,5),所以，想知道有没有一个计算公式，可以很快计算出其个数，只需要计算出个数来就OK。[/quote]  如果可以重复，怎么求，例如，可以是12222,123455等，要求个数，如何求？

user: user-3
content: 求从1到n中选择5个数 的数目是 n*(n-1)*(n-2)*(n-3)*(n-4) 这5个数的递减序只有一个 所以结果是 n*(n-1)*(n-2)*(n-3)*(n-4) - 1

user: user-3
content: 123455 这个数哪里递减了？或者“非递减序”是如何定义的？