NYOJ----组合数
组合数
时间限制:3000 ms | 内存限制:65535 KB
难度:3
- 描述
- 找出从自然数1、2、... 、n(0<n<10)中任取r(0<r<=n)个数的所有组合。
- 输入
- 输入n、r。
- 输出
- 按特定顺序输出所有组合。
特定顺序:每一个组合中的值从大到小排列,组合之间按逆字典序排列。 - 样例输入
-
5 3
- 样例输出
-
543 542 541 532 531 521 432 431 421 321
简单的搜索。。。12345678910111213141516171819202122#include <stdio.h>
char
res[10];
int
n,r;
void
dfs(
int
x,
int
y){
//从x个数挑选y个
if
(!y)
printf(
"%s\n"
,res);
else
{
int
i;
for
(i=x;i>=y;i--){
res[r-y] =
'0'
+i;
dfs(i-1,y-1);
//从剩下的i-1个数中挑选y-1个
}
}
}
int
main(){
scanf(
"%d%d"
,&n,&r);
res[r] =
'\0'
;
dfs(n,r);
return
0;
}
15:14:48 2017-03-09
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步