[ACM_NYOJ_32]组合数
编程算法
组合数
时间限制:3000 ms | 内存限制:65535 KB
描述
找出从自然数1、2、... 、n(0<n<10)中任取r(0<r<=n)个数的所有组合。
输入
输入n、r。
输出
按特定顺序输出所有组合。
特定顺序:每一个组合中的值从大到小排列,组合之间按逆字典序排列。
样例输入
5 3
样例输出
543 542 541 532 531 521 432 431 421 321
来源
代码如下:
#include<stdio.h>
int a[10];
void backtrack(int n, int r, int k){
if(k >= r){
for(int i = 0; i < r; ++i){
printf("%d", a[i]);
}
printf("\n");
return;
}
for(int i = (k == 0 ? n : a[k - 1] - 1); i >= 1; --i){
a[k] = i;
backtrack(n, r, k + 1);
}
}
int main(){
int n, r;
while(~scanf("%d%d", &n, &r)){
backtrack(n, r, 0);
}
return 0;
}
如需转载请注明出处:杰拉斯的博客
当前暂无评论 »